Bus errorとSegmentation faultに困ったら見るブログ

物理学者(ポスドク)による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)

【シェルスクリプト】bcコマンド

(2011/02/14 元記事)

Bus errorとSegmentation faultに困ったら見るブログ 【シェルスクリプト】bcコマンド

ターミナルで実数を扱いたくてコマンドを色々調べました。

 

exprというコマンドは四則演算はできるものの、整数しか扱えない
そこでbcコマンドの登場!

使い方は簡単

echo "1+1" | bc

とすればよい。

 

数値をa,bとすると以下のような演算が行える(他にもありますが使いそうなのだけ)

 

echo "1+1"|bc  #足し算
echo "2-1"|bc   #引き算
echo "2*1"|bc   #かけ算
echo "100/3"|bc  #割り算

 

他にもn乗、cos/sinの値、平方根なども計算できます。

 

ただし上のコマンドのまま割り算を行っても答えが整数で出てしまいうまくいきません

 

そこで次のようなコマンドを追加します。

echo "scale=4;100/3"|bc  #割り算


これで小数点以下の桁数を指定できます。
初期値は0なので、整数しか表示されなかった訳です。

 

これでやっとこさ、光年をpcに変換するシェルスクリプトを作れる・・・
それくらい電卓使えよというツッコミはなしでw

 

------

(2017/05/17 追記)

% echo "scale=4; 5/2" | bc
2.5000

% echo "scale=4; 1/2" | bc
.5000

みたいに、最初の1桁目が0の場合はデフォルトで省略されてしまうらしい

そういうときは、

% echo "scale=4; 1/2" | bc | sed -e 's/^\./0./g'

でOK