Unixシェルスクリプトの浮動小数点数学とそれを変数に割り当てる

Unixシェルスクリプトの浮動小数点数学とそれを変数に割り当てる

私はいつもこのように整数を計算します。

a=12
b=23
c=$((a-b))
echo $c

しかし今、浮動小数点では失敗します。 bcを使ってこれを行うことができるという内容を読んだが、結果を最後に変数に割り当てたいと思います。

a=12.7
b=23.33
c=$((a-b)) | bc
echo $c

答え1

c=$( printf '%s - %s\n' "$a" "$b" | bc )

または怠惰な人のために、

c=$( echo "$a - $b" | bc )

または怠惰なbashユーザーの場合、

c=$( bc <<<"$a - $b" )

コードの問題は次のとおりです。

c=$((a-b)) | bc

不可能。出力を生成する項目のみ(有用に)パイプすることができ、1)またはこの浮動小数点数(構文エラーを含む)の場合、割り当てはc=$((a-b))失敗し、2)出力は生成されません。また、(nothing)の出力はまったく割り当ての一部ではないため、割り当てられません。$a$bbcc

関連情報