bcコマンドで数値計算

恥ずかしながら、bcコマンドなるものを初めて知りました。
入力値と出力値の基数の指定もできるので、2進数->10進数変換とか簡単にできます。
(簡単な計算)

$ echo "4+10" | bc
14

(16進数変換)

$ echo "obase=16;5+9" | bc
E

(2進数->10進数変換)

$ echo "obase=10;ibase=2;11111111" | bc
255

ここで注意しなければならないのが、"obase"と"ibase"の設定順序です。
基本的には"obase"を先に指定した方が良いです。
"ibase"を先に指定すると、その時点で入力値は"ibase"で指定した基数と判断されるので、"obase"で指定する数値も"ibase"で指定した基数で判断されます。
上記の例を"ibase"と"obase"の設定順序を変えると10進数変換されません。
※"ibase=2"で2進数評価になるので、"obase"の"10"は2進数で判断され、"2"となり2進数->2進数変換されています。

$ echo "ibase=2;obase=10;11111111" | bc
11111111
  • ibase : 入力値の基数設定(初期値は"10")
  • obase : 出力値の基数設定(初期値は"10")

(echo以外で)

$ bc <<< 4+2
6


元ネタ
http://www.thegeekstuff.com/2009/11/unix-bc-command-line-calculator-in-batch-mode/