【linux】シェルで計算(bc)
問題
シェルで、計算機を出すまでもなく、その場でさくっと計算をするには?
秒数を時間に直したり、円の面積の計算ぐらいはできたりしない?
答え
bcコマンドが使える。
exprコマンドは整数の計算しかやってくれないが、bcコマンドは複雑な計算もこなしてくれる。
また、使い方によっては引数に渡すときにエスケープすることなどを考えなくてよい。
実行例
echoとパイプ(|)で書く方法だとこう。
$ echo "1 + 1" | bc 2
$ echo "2 * 2" | bc 4
$ echo "scale=3; 1/3" | bc .333
「bc」と引数無しで実行すると、計算機を起動したような感じになる。
シェルの特殊な記号のエスケープなど考えなくてよいのが楽。
$ bc 1+2 (入力してEnter) 3 (答えの表示) 4*5 (入力してEnter) 20 (答えの表示) 6/3 (入力してEnter) 2 (答えの表示) quit (終了)
quit もしくは、Ctrl+dで入力を終了。bcコマンドを抜けられる。
小数点以下いくつまで計算するかは、「scale=いくつ」で指定する。
初期状態が scale=0。
$ bc scale=0 5/4 1 (答え) scale=1 5/4 1.2(答え) scale=2 5/4 1.25(答え) scale=3 5/4 1.250(答え)
いろいろしてみる。
$ bc 1.23456 + 1.65432 2.88888
2^10 1024 2^32 4294967296 2^64 18446744073709551616
scale=0 654987%1234 967
変数が使える。
$bc hankei=123 pi=3.141592 hankei^2*pi 47529.145368
計算機のメモリー機能的なことも可能。
$ bc a=1+2+3 b=4+5+6 c=7+8+9 a+b+c+10 55
コメント