expr、$(())、(())を使う

expr、$(())、(())を使う

シェルスクリプトではexpr $a*$b$(($a+$b))

(($a+$b))ただし、すべてのリソースで(())整数の計算に使用されるため、使用しないことをお勧めします。

それでは、$(())変数があるときに整数値の代わりに何を使うべきですか?$(())変数が浮動小数点値を受け取ることができる場合は、代わりに何を使用する必要がありますか?

ベストアンサー1

  1. 算術の場合、exprこれは古代です。使用しないでください。 *

  2. $((...))そして((...))非常に似ています。両方とも整数計算のみを実行します。違いは、$((...))計算結果を返し、((...))計算結果を返さないことです。$((...))文に非常に便利ですecho

     $ a=2; b=3; echo "$((a*b))"
     6
    

    ((...))変数を割り当てたり終了コードを設定したりする場合に便利です。

     $ a=3; b=3; ((a==b)) && echo yes
     yes
    
  3. 浮動小数点の計算が必要な場合、bcまたは以下を使用しますawk

    $ echo '4.7/3.14' | bc -l
    1.49681528662420382165
    
    $ awk 'BEGIN{print 4.7/3.14}'
    1.49682
    

*BTW、exprglobは、globが不十分で正規表現にPOSIXメソッドが必要な場合に文字列を処理するのにまだ役立ちます。

おすすめ記事