⚠️ 記事内に広告を含みます。

exprを使ってbashで算術計算

exprコマンドで四則計算

基本の四則演算

exprを使用すると簡単に四則計算ができます。

足し算
$ expr 10 + 2 
12

引き算
$ expr 10 - 2 
8

掛け算 (*はエスケープの必要あり)
$ expr 10 \* 2 
20

割り算の 剰余
$ expr 10 % 2 
0

割り算 商
$ expr 10 + 2 
5

bashでは算術式 $(( ))も利用できます。

$ $((10 / 2))

シェルスクリプトで変数に代入するときは``などはいらない。変数の${変数}もいらない
_ANS=$((_num1 / _num2))

算術式は高速ですがexprを使った方が互換性の面で良いかもしれない。

bcコマンドはより複雑な計算が可能なコマンドです。bcコマンドはインストールが必要な場合があるのが欠点です。

$ echo "10*20" | bc
200
bcコマンドに渡して単純な計算を行う。

$ echo "num=10; num + 10.2 * 2" |bc
変数にいれて計算、小数点の計算も可能

割り算はデフォルトでは整数の商だけ
$ echo "num=10; num + 10.554 * 2 / 20" |bc
11

scale=数値 で答えの桁数を設定できます。
$ echo "scale=5;num=10; num + 10.554 * 2 / 20" |bc
11.05540

expr: non-integer argumentのエラー

変数をexprを使って計算しようとするとnon-integer argumentのエラーが表示される場合があります。

(shellscript内にある変数をexprで計算している)
$ expr ${_num1} / 100
expr: non-integer argument

これは変数の中に制御文字が入っていることがあります。制御文字はcat -eで表示可能

制御文字はsedで変換できます。

$ cat -e _num1
781^M$

$ cat -e _num1 | sed -e 's/\r/\n/g'
781$

$ expr ${_num1} / 100
7

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です