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算術式は、デフォルトで 10 進数になる一連の規則によって定義されます。E は 10 進数ではないため、エラーになります。

@DiegoBasch が示唆しているように、 let をドロップして、算術式として扱われないようにしてください。

于 2013-01-16T16:30:59.180 に答える