シェルスクリプトで評価変数を計算する方法

シェルスクリプトで評価変数を計算する方法

シェルスクリプトのeval変数に対して数学演算を実行したいのですが、うまくいきません。

query=first
eval avgOverall$query[1]=28.5

avgOverall=$(("`eval echo '${avgOverall'$query'[1]}'`+1")) | bc

しかし、次のエラーが発生しました。

bash: "28.5+1": syntax error: operand expected (error token is ""28.5+1"")

私は何が間違っていましたか?

答え1

次のように書くのは痛いです。

avgOverall=$(eval echo '${avgOverall'$query'[1]}' + 1 | bc )

Bashバージョン4を使用している場合は、連想配列を使用してください。

declare -A avgOverall
avgOverall[$query,1]=28.5
avg=$( bc <<< "${avgOverall[$query,1]} + 1" )
echo $avg

関連情報