bash コマンドラインで数値計算する方法

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください