0

我对以下代码有疑问

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”),但它给出了不同的错误。我该如何解决这个问题?

4

2 回答 2

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
于 2013-01-16T16:35:10.163 回答
1

这很无聊的原因是 let 将它的所有参数都视为算术值。

bash算术表达式由一组默认为十进制的规则定义。E 不是十进制数,因此是错误的。

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

于 2013-01-16T16:30:59.180 回答