条件式に複数の条件を指定したい場合があります。

例えば、「入力1が○○であり、かつ、入力2が△△であるときに□□の処理をしたい」と、言った場合です。今回は、if~then~else文で複数の条件を指定するケースを見ていきます。

まずはサンプルのスクリプトを見てください。

#!/bin/bash
echo input1
read i1
echo input2
read i2

if [ $i1 = "0" -a $i2 = "1" ]; then
    echo "OK!"
else
    echo "NG!"
fi

-aがAnd(かつ)を表します。

上記例では標準入力から2つの値を「i1」「i2」にそれぞれ格納し、「i1」が0かつ「i2」が1なら条件式は真と判定し、then以下の処理を実行します。それ以外ならelse以下の処理が実行されます。

上記シェルスクリプトをファイル名「prog005.sh」として保存したときの例です。

$ chmod u+x prog005.sh
$ ./prog005.sh
input1
0
input2
1
OK!

「0」と「1」を入力しており、条件式に一致するため、真のブロックの処理が実行され、「OK!」と出力されます。

上記サンプルでは、And(かつ)を使用しましたが、Or(または)も使用できます。

And・Or条件

条件 演算子
And -a
Or -o