Bash Shell - 条件文(if-else)

シェルスクリプトで条件文の使用方法について説明します。

1. Syntax

Syntaxは次のとおりです。他の言語の条件文と同じようにif、if-else、if-elif-elseパターンのように使用することができます。

if [ expression ]
then
    statement
elif [ expression ]
then
    statement
else
    statement
fi

2. Example: if-else

以下は、if-elseを使用する例です。 $a = $bは、aとbが同じ場合True、異なる場合にはFalseになります。

#!/bin/bash

a=10
b=20

if [ $a = $b ]
then
    echo "a is equal to b"
else
    echo "a is not equal to b"
fi

Output:

$ bash example.sh
a is not equal to b

3. テスト演算子

テスト演算子は2つの変数を比較したり、ファイルの種類や権限を検査する演算子です。

if [ statement ]でテスト演算子を使用して、条件式を作成することができます。

次のようなテスト演算子があり、意味は下記の通りです。

Operator Description Value
! EXPRESSION The EXPRESSION is false.
-n STRING The length of STRING is greater than zero.
-z STRING The lengh of STRING is zero (ie it is empty).
STRING1 = STRING2 STRING1 is equal to STRING2
STRING1 != STRING2 STRING1 is not equal to STRING2
INTEGER1 -eq INTEGER2 INTEGER1 is numerically equal to INTEGER2
INTEGER1 -gt INTEGER2 INTEGER1 is numerically greater than INTEGER2
INTEGER1 -lt INTEGER2 INTEGER1 is numerically less than INTEGER2
-d FILE FILE exists and is a directory.
-e FILE FILE exists.
-r FILE FILE exists and the read permission is granted.
-s FILE FILE exists and it's size is greater than zero (ie. it is not empty).
-w FILE FILE exists and the write permission is granted.
-x FILE FILE exists and the execute permission is granted.

4. Example: if-elif-else

以下は、if-elif-elseを使用する例です。 [ $a -lt $b ]a < bの意味です。

#!/bin/bash

a=10
b=20

if [ $a = $b ]
then
    echo "a is equal to b"
elif [ $a -lt $b ]
then
    echo "a is less than b"
else
    echo "a is not equal to b"
fi

Output:

$ bash example.sh
a is less than b

5. Example: if not..

[ expression ]にnotを適用するには、 ! [ expression ]または[ ! expression ]のように表現!を付けるされます。

#!/bin/bash

a=10
b=20

if ! [ $a = $b ]
then
    echo "a is not equal to b"
else
    echo "a is equal to b"
fi

Output:

a is not equal to b

6. ORまたはAND演算子

二つの条件にORまたはAND演算子を適用することができます。

AND演算子は、 [ expression ] && [ expression ]のように使用することができます。

#!/bin/bash

a=10
b=20

if [ $a = 10 ] && [ $b = 20 ]
then
    echo "a is 10 and b is 20"
fi

Output:

a is 10 and b is 20

OR演算子は、 [ expression ] || [ expression ]のようにように使用することができます。

#!/bin/bash

a=10
b=20

if [ $a = 10 ] || [ $b = 10 ]
then
    echo "a is 10 or b is 10"
fi

Output:

a is 10 or b is 10

References

codechachaCopyright ©2019 codechacha