Linux bash中的浮点/科学符号值出错

Linux bash中的浮点/科学符号值出错,linux,arrays,bash,floating-point,Linux,Arrays,Bash,Floating Point,我对下面的代码有问题 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 我也尝试过使用浮点数(如“0.1”),但它给

我对下面的代码有问题

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

我也尝试过使用浮点数(如“0.1”),但它给出了一个不同的错误。我该如何解决这个问题呢?

之所以会出现这种情况,是因为让我们将它的所有参数都视为算术值

bash由一组默认为十进制的规则定义。E不是十进制数,因此存在错误


正如@DiegoBasch所建议的,试着删除let,这样它就不会被视为算术表达式。

之所以这样做,是因为let将它的所有参数都视为算术值

bash由一组默认为十进制的规则定义。E不是十进制数,因此存在错误


正如@DiegoBasch建议的那样,尝试删除let,这样它就不会被视为一个算术表达式。

这里的数组没有特别的原因(除了它们很有趣):


这里的阵列没有特别的原因(除了它们很有趣):


你为什么不直接做
thresh=${thresh\u SERIE[$i]}
?谢谢!它成功了,这是一个非常愚蠢的错误。你为什么不直接做
thresh=${thresh\u SERIE[$i]}
?谢谢!它奏效了,这真是一个愚蠢的错误。
/bench_new.sh: line 40: let: thresh=5E: value too great for base (error token is "5E")
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