条件式が真のときだけでなく偽であったときも真のときとは別の処理を実行させたい場合があります。そんなときはelse文を使用して、偽の場合の処理も定義します。

#!/bin/sh
echo 1+1=
read answer

if [ $answer = "2" ]; then
    echo "OK"
else
    echo "NG"
fi

上記シェルスクリプトをファイル名「prog003.sh」として保存し、実行してみてください。

$ chmod u+x prog003.sh
$ ./prog003.sh
1+1=

echoコマンドにより「1+1=」という文字列を表示され、この段階で、処理が止まり、readコマンドが入力を待っている状態となります。この状態で、キーボードから「2」と入力しEnterキーを押せば、if文の条件式は真となりthen以下の処理が実行されます。結果、「OK」という文字列が出力されます。

では、偽の場合はどうなるでしょう。同じように実行し、「3」と入力してみてください。

そうです。偽の場合はelse以下の処理が実行されます。この場合だと、「NG」という文字列をechoコマンドによりプロンプト上に出力しています。

真と偽

コンピュータの世界では「真(true)」と「偽(false)」という考え方がよく出てきます。ある条件が成り立っていることを真、成り立たないことを偽と表します。
例えば、$a1 = “y”という条件式(変数a1の値はyに等しい)は、変数a1の値がyであれば、この条件式は成り立つため真となります。逆に、a1の値がy以外であれば、偽となります。
コンピュータの世界では、突き詰めれば何でも数字で表します。真と偽も数字で表されます。シェルスクリプトでは真は0、偽は0以外で表されます。
※他のプログラム言語では真が0以外、偽が0となるのが多いので混合しないよう注意してください。