SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【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

関連するメモ

コメント