Programmer's Note

コード読み書きの備忘録。

簡単なcalculatorコマンドを作ってみる(Ruby)

たまーにさくっと計算機欲しいときがあるけど、UNIX標準のbcってクセがありすぎて辛い。

探してもシンプルなcalculatorコマンドってないもんだなと、、、。 やりたいことは、単純で

$ calc 1024*24-54
24522   0x5fca  057712

結果を、10進、16進、8進て表示してくれる。 (プログラマー用ね)

引数に0x24とか0123とかも受け付けてくれる。

$ calc 12*0x24/0123
5   0x5 05

とかね。

よく考えたら、シンプルなのでRubyのeval使えばできるや。と。

ソース(calc):

#!/usr/bin/ruby

ARGV.length > 0 || exit

eval("$res = #{ARGV[0]}")
$res_hex = "%x" % $res
$res_oct = "%o" % $res
puts "#{$res}\t0x#{$res_hex}\t0#{$res_oct}"

実際には、引数はクオテーション'で囲む必要がある。 (shが*とか展開しちゃうので) まあ、sedawk'で囲ってるしね。

$ calc '1024*24-54'
24522   0x5fca  057712

単にRubyに計算させてるだけなので、やろうと思えば sin(), cos()もできるが、まあ多分使わない。