在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:line 266:意外令牌附近的语法错误`('
./ test.sh:line 266:
######## eval "$List=(
seq $ Initial $ Step $ Final`)“'
答案 0 :(得分:0)
After!Final你有a)而不是}
答案 1 :(得分:0)
在筛选了一些早期的代码之后,我修复了'vs'的一些问题,并且这个错误停止了。我是BASH的新手所以我没想到带有')'的错误信息是由一个引用100行以上。
答案 2 :(得分:0)
为什么不使用elif或case?
eval“$ List =(seq $Initial $Step $Final
)”
而不是
评估“$ {List =(seq $Initial $Step $Final
)}”或评估“$ {List = seq $Initial $Step $Final
}”