我对以下代码有疑问
THRESH_SERIE=("1" "5E-1" "1E-1" "5E-2" "1E-2" "5E-3" "1E-3" "5E-4" "1E-4")
for ((i=0;i<${#THRESH_SERIE[@]};i++))
do
let thresh=$(echo ${THRESH_SERIE[$i]})
$EXEC 1 $N ${thresh} 0 0 >> $OUTPUT
done
如果我尝试运行脚本,它将为数组中的每个值返回如下错误:
/bench_new.sh: line 40: let: thresh=5E: value too great for base (error token is "5E")
我也试过使用浮点数(比如“0.1”),但它会产生不同的错误。我该如何解决这个问题?
答案 0 :(得分:3)
这里的数组没有特别的原因(除了它们“有趣”之外):
THRESH_SERIE="1 5E-1 1E-1 5E-2 1E-2 5E-3 1E-3 5E-4 1E-4"
for thresh in ${THRESH_SERIE}
do
$EXEC 1 $N ${thresh} 0 0 >> $OUTPUT
done
答案 1 :(得分:1)
这是borking的原因是让我们将它的所有参数视为算术值。
bash Arithmetic expression由一组默认为十进制的规则定义。 E不是十进制数,因此是错误。
因为@DiegoBasch建议尝试删除let,所以它不被视为算术表达式。