シェルスクリプトではexpr $a*$b
。$(($a+$b))
(($a+$b))
ただし、すべてのリソースで(())
整数の計算に使用されるため、使用しないことをお勧めします。
それでは、$(())
変数があるときに整数値の代わりに何を使うべきですか?$(())
変数が浮動小数点値を受け取ることができる場合は、代わりに何を使用する必要がありますか?
ベストアンサー1
算術の場合、
expr
これは古代です。使用しないでください。 *$((...))
そして((...))
非常に似ています。両方とも整数計算のみを実行します。違いは、$((...))
計算結果を返し、((...))
計算結果を返さないことです。$((...))
文に非常に便利ですecho
。$ a=2; b=3; echo "$((a*b))" 6
((...))
変数を割り当てたり終了コードを設定したりする場合に便利です。$ a=3; b=3; ((a==b)) && echo yes yes
浮動小数点の計算が必要な場合、
bc
または以下を使用しますawk
。$ echo '4.7/3.14' | bc -l 1.49681528662420382165 $ awk 'BEGIN{print 4.7/3.14}' 1.49682
*BTW、expr
globは、globが不十分で正規表現にPOSIXメソッドが必要な場合に文字列を処理するのにまだ役立ちます。