bashで計算

概要

bashのshell script内で数値計算する方法をまとめます.追って更新もしていきます.

整数の四則演算

整数の四則演算は$((式))でできます.
剰余は%で,指数は**です.

例1

a=$((23+10))
b=$((23-10))
c=$((23*10))
d=$((23/10))
e=$((23%10))
f=$((2**8))
echo $a $b $c $d $e $f

実行結果

33 13 230 2 3 256

整数の四則演算なので,23/102.3でなく2です.
2**82の8乗です.

例2

変数を用いて計算する場合、(( ))内では$をつけない.

a=23
b=10
c=$((a/b))
echo $c

実行結果

2

小数の四則演算 (bc)

bcコマンドを使います.

bcによるbash shell scriptでの小数計算

a=23
b=10
c=`echo "scale=3; $a / $b" | bc`
echo $c

bcコマンドが分からなければ、この記事の末尾の おまけ: bc を読んでください.

例: 時刻と時刻の引き算

a=`date +%s.%N`
sleep 1.2
b=`date +%s.%N`
c=`echo "$b - $a" | bc`
echo $c

おまけ: 変数への値の代入

変数a3を代入,表示するには,以下↓の様に書きます.

a=3
echo $a

非常に有名な注意点ですが、a=3の途中にスペースなどを入れてはいけません。下記↓の様にスペースを入れてa = 3と書くとエラーになります。

a = 3
echo $a

変数aの参照の仕方は、$aまたは${a}です。

a=3
echo $a
echo ${a}

どちらでも良いですが{ }をつけた方が安全です。$aの直後に文字がある場合は${a}と書かないと正しく認識されません.

a=3
echo $ax
echo ${a}x

実行結果↓


3x

$axは当然ながら(?)変数aでなく変数axと解釈されます.
${a}xは,変数axと解釈され3xと表示れます.

おまけ: bc

bc使用例1

最初にbcコマンドの対話的な実行例を紹介.太字がユーザ入力

$ bc
23+10
33
23/10
2
scale=3
23/10
2.300

初期設定では,scale=0となっており、小数点以下は0桁表示の状態です.
scale=3と設定すると,小数点以下3桁表示の状態になります.これで小数が使えます

剰余は%、指数は^です.例えば2の8乗は2^8です。

bc使用例2

コマンドラインでの実行は以下でOK.太字がユーザ入力

$ echo 23/10 | bc
2
$ echo "scale=3;23/10" | bc
2.300

bcは平方根関数sqrt()を内蔵しています.bc -lと起動すれば数学ライブラリを使えます.
s() sin関数,c() cos関数,a() atan()関数,l() 自然対数,e() eの累乗.eは自然対数の底,j(n,x) ベッセル関数.

$ bc -l
s(3.14/2)
.99999968293183462021
pi=4*a(1)
pi
3.14159265358979323844
s(pi/2)
1.00000000000000000000


いいなと思ったら応援しよう!