プログラムの処理は通常、ソースコードの上から下へ向かって処理が実行されます。これはシェルスクリプトにおいても同様です。

しかし、場合によっては条件によって処理を分岐させたいときがあります。

処理を分岐させるには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文についてもっと細かくみていきます。