シェルスクリプトで数値計算をする時に expr を使用することが多いですが、割算をした場合は小数部分を表示させることができません。
例えば、3 / 5 の場合は実際に計算をすると 0.6 になりますが、expr 3 / 5 の結果は 0 が返ります。
そこで小数部分を表示させる方法を紹介します。
bcコマンドの利用
もう少し複雑な計算をさせる場合は bc コマンドを利用します。
bc コマンドに計算式を標準読み込みさせると結果を算出してくれます。
この時、セミコロンで計算式を区切ることで複数の計算命令が指定ができます。
scale は小数点以下何桁までを表示するかを指定します。
1 2 | USE=`echo "scale=5; (3512 / 28570) * 100" | bc` echo "${USE}%" |
結果は以下の通りです。
12.29200%
表示制御
また、計算は小数を考慮したいけど最後の出力は整数値で表示したい場合も出てくると思いますが、指定方法を見つけることができなかったので、awk を使って無理矢理取り出しちゃいました・・・。
1 2 | USE=`echo "scale=5; (3512 / 28570) * 100" | bc | awk -F'.' '{print $1}'` echo "${USE}%" |
結果は以下の通りです。
12%
まとめ
最新のシェルでは expr や bc を使わなくても計算ができるようになっているので、「シェルで整数型の変数を使って計算処理をする方法」もご覧ください。

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