本連載ではこれまでに便利なコマンドを多数紹介してきた。今回取り上げる「bc」も、そんなコマンドの1つだ。これは、任意精度の数値演算用コマンドで、簡単な計算から関数電卓を使うような計算、関数や制御構文を伴う数値演算を任意精度で実行することができる。

プログラミング言語などでは、数値演算で表現できる範囲が限られていることも多いが、bcコマンドでは任意精度の演算ができる点がポイントだ(ただし、bcコマンドでもさすがに桁が大きくなりすぎると処理落ちする)。

要は、Googleの検索窓でできる数値計算と同じことがbcコマンドでもできると考えてもらえればよいだろう。ちょっとした計算をしたいとき、チャチャッと使えるので便利だ。Linux使用時には、Excelが使えないケースもあったりするので、こうした演算コマンドは知っておいて損はない。

bcコマンドの使い方

bcコマンドは、何も指定しないで実行するとインタラクティブに動作するモードになる。次の例の場合、「1.08 * (2912 + 1102 + 886 + 150)」というのが入力した行で、その次の「5454.00」がbcコマンドから出力された計算結果にあたる。

bcコマンドを使った計算例。最後に「quit」と入力すると終了する

bcコマンドは、計算内容を標準入力から入力したり、ファイルで渡したりすることも可能だ。標準入力を使うと、次のように1行だけで処理を行うことができる。

bcコマンドに対して標準入力からデータを渡した場合の計算例

OpenBSDのbcコマンドの場合、「-e」というオプションがあり(これはFreeBSDでも使われている)、そこで計算内容を指定することもできる。一方、LinuxやmacOSで使われているGNU版のbcコマンドにはそのオプションはないため、標準入力を使うことになる。

bcコマンドには、関数の定義や制御構文の使用といったプログラミング的な機能も用意されているので、もっと複雑な計算をさせることもできる。例えば、次のような感じで関数を定義してから、for文で計算をグルグル回すといったことも可能だ(関数定義とfor文の使い方は、OpenBSDのbcコマンドマニュアルから抜粋)。

bcコマンドを使った複雑な計算例

計算内容がある程度複雑なものであれば、直接入力するよりもファイルにまとめてbcコマンドに渡す使い方のほうがよいだろう。例えば、次のように計算内容をファイルにまとめておく。

計算内容を別途ファイルに書いておく

そして、次のようにbcコマンドの引数にファイルを指定すると、計算が実行される。

引数にファイルを指定したbcコマンドの実行結果

複雑な数値計算には、汎用のプログラミング言語を使うとか、数値演算専用のプログラミング言語を使わなければならないと身構えるかもしれないが、実はbcコマンドでも結構いろいろなことができる。ぜひ試しに使ってみていただきたい。