bashの内蔵計算機能を使う

  • 10進数と16進数で混合計算ができる
  • 普通に()を使って数式がかける
  • 16進数への変換がすぐにできる

が必要で普段はポケコンを使っているのだがコマンドラインでやりたい。bc はいつも使い方を忘れてしまっていたが、bash の内蔵計算機能があるというので工夫してみた。

function cal
{
    ans=$(($*))
    echo $ans
}

function hex
{
    read stdin
    printf '%#x\n' $stdin
}
$ cal "128+(0x10*8)" | hex
0x100

最後の答えは $ans で参照できる。もし 16 進数を 0xFF のように書かないとエラーになる場合は以下にすれば 0xff でもよくなるはず。

function cal
{
    exp=`echo $* | tr '[abcdef]' '[ABCDEF]'`
    ans=$(($exp))
    echo $ans
}

問題点

しばらく使ってみたが、小数点演算ができないという電卓としては致命的な問題が・・・。