プログラムの処理は通常、ソースコードの上から下へ向かって処理が実行されます。これはシェルスクリプトにおいても同様です。
しかし、場合によっては条件によって処理を分岐させたいときがあります。
処理を分岐させるにはif文を使用します。
まずは下記のシェルスクリプトを作成してください。
#!/bin/sh echo 1+1= read answer if [ $answer = "2" ]; then echo "OK" fi
作成したら、実行権を与えてシェルスクリプトを実行してみましょう。
シェルスクリプトのファイル名は「prog001.sh」であったとします。
$ chmod u+x prog001.sh $ ./prog001.sh 1+1=
実行すると上記のように「1+1=」とプロンプト上に表示されると思います。ここまでの処理はechoコマンドで「1+1=」という文字列を表示させているだけです。
そしてこの段階で、処理が止まっている状態になります。処理を止めている原因はreadコマンドにあります。
readコマンドは標準入力から1行読み込んで変数に格納するためのコマンドです。標準入力とはこの場合だとキーボートからの入力になります。
では、ここで「2」と入力してみましょう。
$ ./prog001.sh 1+1= 2
「2」と入力したらEnterキーを押してください。
するとプロンプト上に「OK」という文字列が出力されます。
処理が止まっていたのはreadコマンドがキーボードからの入力を待ち受けていたためです。「2」と入力し、Enterキーを押したことでreadコマンドの実行が完了し処理が進み出したというわけです。
では、もう一度今のシェルスクリプトを実行し、readコマンドのところで「3」と入力したらどうなるでしょう。
$ ./prog001.sh 1+1= 3
今度はEnterキーを押しても何も表示されません。これは、if文の条件式が真とならなかったため、ifブロックの中の処理が実行されなかったためです。
これが条件による処理の分岐です。これだけの説明では、疑問点が浮かび上がってくるかもしれませんが、今回は概要に留め、次ページでif文についてもっと細かくみていきます。