0

在 BASH 中,

我应该注意,变量 $Lambda0_List 等是从代码前面的输入文件中读取的。

PARAM_ARRAY=("Lambda0" "N" "M" "Sigma")

for i in "${PARAM_ARRAY[@]}"

do

 List="$i"_List

 Vary="$i"_Vary

 Use_Range="$i"_Use_Range

 Initial_Str="$i"_Initial

 Final_Str="$i"_Final

 Step_Str="$i"_Step

 Initial=${!Initial_Str}

 Step=${!Step_Str}

 Final=${!Final_Str}

 if [ "${!Vary}" ==  "T" ] 

 then

  if [ "${!Use_Range}" == "T" ]

  then 

   eval "$List=(`seq $Initial $Step $Final `)"

   echo "$i : vary, use_range" 

  else

   echo "$i: vary, use list"

  fi

 fi

done

引发语法错误

意外标记 `(' 附近的语法错误

通常我能够解释错误并找到解决方案,但我不明白为什么“(”是一个意外的标记。

编辑:

我注意到如果我在 shell 中运行这条线,但在我的脚本中,这条线有效,

编辑:

摆弄有问题的行,我发现即使注释掉了,我也会收到语法错误!

/test.sh:第 266 行:意外标记 `(' 附近的语法错误

./test.sh:第 266 行: ######## eval "$List=(seq $Initial $Step $Final `)"'

4

3 回答 3

0

在 !Final 你有一个 ) 而不是 }

于 2013-06-19T09:20:39.203 回答
0

在筛选了一些较早的代码后,我修复了“vs”的一些问题,并且这个错误不再出现。我是 BASH 的新手,所以我没想到带有 ')' 的错误消息是由 100 行的引用引起的以上。

于 2013-06-19T10:43:13.117 回答
0

为什么不使用 elif 或 case ?

评估 "$List=( seq $Initial $Step $Final)"

代替

eval "${List=( seq $Initial $Step $Final)}" 或 eval "${List= seq $Initial $Step $Final}"

于 2013-08-28T06:55:09.913 回答