PROGRAM SHELL

初心者のためのbash超入門【第2回 四則演算】

 

 

四則演算のやり方

 

四則演算結果の画面表示

四則演算した結果を画面に表示するには、以下のように記述します。
これはコマンドプロンプトから実行できます。

echo $((数字 四則記号 数字))
または
expr 数字 四則記号 数字

 実行例
$ echo $((8 + 2))
10
$ expr 8 + 2
10

 

四則演算記号の種類

四則演算記号には、以下のような種類があります。

四則演算記号

+ 足し算
- 引き算
* 掛け算
/ 割り算

 

簡単な計算機を作ってみよう

 

計算式をシェルスクリプトに渡す

それでは簡単な計算機をシェルスクリプトで作ってみましょう。
プログラムの内容は、計算する式をシェルスクリプトに渡して、計算結果を画面に出力するという処理になります。
シェルスクリプトに限らず、プログラムに渡す値のことを引数(ひきすう)といいます。
今回作成するシェルスクリプトの引数は、必ず数字と四則演算記号を組み合わせて、"(ダブルクォーテーション)で囲います。

シェルスクリプト名 "計算式"

メモ

今回の場合は、'(シングルクォーテーション)を使っても表示結果は同じです。

 

シェルスクリプトの作成

四則演算の結果を画面に出力するシェルスクリプトは、以下のようになります。
シェルスクリプト名はcalc.shとしています。(名前は何でも構いません)

 実行例
$ ./calc.sh "8 + 2"
10

注意ポイント

このシェルスクリプトには、エラー処理は入っていません。
業務で使用するシェルスクリプトには必ずエラー処理が入りますが、今回は練習ということでエラー処理は割愛します。

echoコマンドの中に$1という記述がありますが、これが上記で説明した引数です。
$1にはシェルスクリプトに渡された値が入っています。(実行例では$1に「8 + 2」が入っています)
また、引数を複数使うこともできます。
$1は1番目の引数を表し、2番目の引数は$2、3番目の引数は$3となり、$9まで存在します
10番目以降の引数は、${10}というように{ }で囲む必要があります

参考

実は$0というのもあります。
これは自分自身、つまりシェルスクリプト名を表します。

また、今回作成したシェルスクリプトは、以下のような計算もできます。

 実行例
$ ./calc.sh "8 * 3 + 2 * 7"
38

計算順序もきちんと考慮してくれます。

 

小数計算のやり方

では、割り切れない値を渡すとどうなるでしょうか?

 実行例
$ ./calc.sh "8 / 3"
2

残念ながら整数部分のみ表示されて、少数部分は表示されません。
小数を表示したい場合は、bcコマンドを使います。
bcコマンドを使って小数を表示するようにシェルスクリプトを修正すると、以下のようになります。
少し難しくなっていますが、|(パイプ)を使ってechoした結果をbcコマンドに渡して計算するという処理です。

メモ

scale=2という記述は、小数点第2位まで表示するという意味です。
bcコマンドのオプション「-l」は、小数を表示する時に使います

 実行例
$ ./calc.sh "8 / 3"
2.66

これで小数が表示されるようになります。
ただし、このシェルスクリプトでは、1未満の値は.33のように表示されてしまい、先頭の0は表示されません。
0.33と表示させるにはprintfコマンドを使って、以下のように記述します。

メモ

%.2fはprintfコマンドの書式で、小数点第2位まで表示するという意味です。
また、\nは改行を表します。(printfコマンドは自動で改行しないため、明示的に改行する必要があります)

 実行例
$ ./calc.sh "8 / 3"
2.66

注意ポイント

このプログラムでは、値が整数のみの場合も3.00というように小数第2位まで表示されます。

 

 

-PROGRAM, SHELL