整数の計算なら、「echo $((数式))」でできますよね。
$ echo $((1 + 1)) # 足し算
2
$ echo $((2 - 1)) # 引き算
1
$ echo $((10 * 10)) # かけ算
100
$ echo $((6 / 2)) # 割り算
3
$ echo $((7 % 3)) # 剰余
1
$ echo $((10 ** 10)) # 階乗
10000000000
でも、少数は消えてしまいます。
$ echo $((10/4))
2
少数以下が欲しい場合、「bc」コマンドを使います。
$ echo 'scale=1; 10/4' | bc
2.5
「scale=1」で、少数以下の桁数を1桁に指定しています。もちろん、桁数を増やして実行することもできます。
$ echo 'scale=5; 10000/17 ' | bc
588.23529
数値にシェル変数を使うこともできます。
$ WIDTH=1200
$ NUM=8
$ echo "scale=5; ($WIDTH - 100) / ($NUM / 1.5)" | bc
206.25012
Bashスクリプトなどで「少数を含む数値の比較」する場合もbcが使えます。
#!/bin/bash
NUM1=17.9
NUM2=17.2
if [ `echo "$NUM1 > $NUM2" | bc` == 1 ]; then
echo "${NUM2}より${NUM1}のほうが大きい"
elif [ `echo "$NUM1 == $NUM2" | bc` == 1 ]; then
echo "${NUM2}と${NUM1}は同じ"
else
echo "${NUM2}より${NUM1}のほうが小さい"
fi
更新履歴
2017-10-04 Ubuntu 17.10で動作を確認
コメント