クマの手も借りたい
馬とテニスとリラックマが好きな IT 系のエンジニアです。
シェル

シェルスクリプトでexprより複雑な数値計算させるbcコマンド

シェルスクリプトで数値計算をする時に expr を使用することが多いですが、割算をした場合は小数部分を表示させることができません。

例えば、3 / 5 の場合は実際に計算をすると 0.6 になりますが、expr 3 / 5 の結果は 0 が返ります。

そこで小数部分を表示させる方法を紹介します。

bcコマンドの利用

もう少し複雑な計算をさせる場合は bc コマンドを利用します。

bc コマンドに計算式を標準読み込みさせると結果を算出してくれます。

この時、セミコロンで計算式を区切ることで複数の計算命令が指定ができます。

scale は小数点以下何桁までを表示するかを指定します。

USE=`echo "scale=5; (3512 / 28570) * 100" | bc`
echo "${USE}%"

結果は以下の通りです。

12.29200%

表示制御

また、計算は小数を考慮したいけど最後の出力は整数値で表示したい場合も出てくると思いますが、指定方法を見つけることができなかったので、awk を使って無理矢理取り出しちゃいました・・・。

USE=`echo "scale=5; (3512 / 28570) * 100" | bc | awk -F'.' '{print $1}'`
echo "${USE}%"

結果は以下の通りです。

12%

まとめ

最新のシェルでは expr や bc を使わなくても計算ができるようになっているので以下もご覧ください。

あわせて読みたい
シェルで整数型の変数を使って計算処理をする方法シェルでは明示的に整数型の変数が宣言できます。 これまでループのカウントや計算などは expr コマンドを利用していたのですが、明...
Web API The Good Parts

オライリーの「Web API」に特化した本です。最近の多くの Web サービスは API が活用されていますが、その技術はこれまでの Web サイトとそれほど大きく変わりません。

今後、マイクロサービス化が進む中で知っておいて損はない内容が詰め込まれており、現場のエンジニアやこれから Web 系のエンジニアを目指す人にもオススメの一冊です。

created by Rinker
¥2,376
(2018/09/20 11:58:13時点 Amazon調べ-詳細)

あなたにオススメ