bash で数値計算する方法を紹介する。
bc コマンドを使う方法
bc は計算式を対話的に入力して使う。bc を起動するとコピーライト等のメッセージが表示された後で式の入力待ち状態になるので、計算式を入力してみよう。
$ bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. (1+2+3)*10/2 30
上の例でハイライトしている最後の2行が入力した計算式と計算結果だ。
bc コマンドは一度起動すれば計算式をいくつでも入力できる。コマンドを終了するにはCtrl-D
キーを押す。
また bc コマンドを一行で実行するには以下のようにいくつかの方法がある。
$ echo '1234+5678' | bc 6912 $ bc <<< '(3+2)*1000' 5000
expr コマンドを使う方法
expr は本来論理式の判定を行うためのコマンドだが、パラメーターに四則演算記号と整数と括弧だけが含まれている場合に、数値計算を行う機能がある。なお、expr が入出力できるのは整数だけで小数は取り扱うことができない点に注意が必要だ。
積算記号である*
と括弧(
)
はバックスラッシュ\
でエスケープする必要がある。
そして、計算式はすべての要素をスペースで区切る必要がある。
$ expr 1234 + 5678 6912 $ expr \( 3 + 2 \) \* 1000 5000
$(()) 記法を使う方法
bash 自体が内蔵している機能として $() の中に、さらに括弧で囲んだ計算式を書くことができる。つまり$((計算式))
のように記述する。
この方法も expr と同様に入出力できるのは整数だけで小数は取り扱うことができない。
ただし、スペース区切りやバックスラッシュによるエスケープが不要な点で、expr よりも手軽に式を記述できる。
$ echo $((1234+5678)) 6912 $ echo $(((3+2)*10)) 5000