Bash で if...else 文を使用する方法
条件付き文はほとんどのプログラミング言語で意思決定のために使われています。条件文は特定の条件が満たされた場合にのみ文や文を実行できるようにします。ほとんどのプログラミング言語では、if ... else
が条件文として使われています。バッシュでは、条件文として if
、if...elif...elif...else
、if ... else
やネストされた if
文もあります。
バッシュの if
文
if
ステートメントの構文
if Test-Expression
then
Statements
fi
上の例では、Test-Expression
が True
の場合、Statements
が実行されます。キーワード fi
を用いて if
文を終了します。
もし Test-Expression
が True
でない場合、Statements
は何も実行されません。
コードをより読みやすく整理するために、4 スペースまたは 2 スペースのインデントを使用することができます。
例:Bash
の if
ステートメント
echo -n "Enter numnber : "
read n
rem=$(( $n % 2 ))
if [ $rem -eq 0 ]
then
echo "$n is even number"
fi
出力:
Enter numnber : 4
4 is even number
ユーザーから数字を受け取り、その数字が偶数の場合のみ出力します。
偶数の場合は、2 で割ったときに残りが 0 になります。したがって、テスト式は True
であるので、echo
文が実行されます。
Bash
の if ... else
文
if ... else
ステートメントの構文
if Test-Expression
then
Statements-1
else
Statements-2
fi
この例では、Test-Expression
が True
の場合は Statements-1
が実行され、そうでない場合は Statements-2
が実行されます。if ... else
文を終了させるには、fi
キーワードを用います。
例:Bash
の if...else
文
echo -n "Enter numnber : "
read n
rem=$(( $n % 2 ))
if [ $rem -eq 0 ]
then
echo "$n is even number"
else
echo "$n is odd number"
fi
出力:
Enter numnber : 5
4 is odd number
これはユーザから数値を受け取り、入力された数値が 2
で正確に割り切れるかどうかに応じて出力します。
偶数の場合は、2 で割ったときに残りが 0 になるので、テスト式は True
となり、文 echo "$n is even number"
が実行されます。
奇数の場合、残りは 0 ではないので、テスト式は False
となり、文 echo "$n is odd number"
が実行されます。
Bash
の if...elif...else
文
if...elif...elif...else
ステートメントの構文
if Test-Expression-1
then
Statements-1
elif Test-Expression-2
then
Statements-2
else
Statements-3
fi
Test-Expression-1
が True
の場合、Statements-1
が実行されます。そうでなければ、Test-Expression-2
が True
の場合は Statements-2
が実行されます。
どちらのテスト式も True
ならば Statements-3
が実行されます。
elif
文は好きなだけ持つことができ、else
文はオプションです。
例:Bash
の if...elif...else
文
echo -n "Enter the value of a: "
read a
echo -n "Enter the value of b: "
read b
if [ $a -lt $b ]
then
echo "a is less than b"
elif [ $a -gt $b ]
then
echo "a is greater than b"
else
echo "a is equal to b"
fi
出力:
Enter the value of a: 4
Enter the value of b: 4
a is equal to b
これはユーザの入力として 2つの数値を受け取り、どちらのテスト式が真であるかに基づいて結果を表示します。
a<b
の場合、プログラムは a is less than b
と表示します。
a>b
の場合、プログラムは a is greater than b
を表示します。
条件文のどちらも真でない場合、プログラムは a is equal to b
と表示します。
Bash のネストされた if
文
ある if
文が別の if
文の中に置かれた場合、それは入れ子になった if
文と呼ばれます。
echo -n "Enter numnber : "
read a
rem=$(( $a % 2 ))
if [ $rem -eq 0 ]
then
if [ $a -gt 10 ]
then
echo "$a is even number and greater than 10."
else
echo "$a is even number and less than 10."
fi
else
echo "$a is odd number"
fi
出力:
Enter numnber : 46
46 is even number and greater than 10.
これは、入れ子になった if
文の使い方を示しています。数値が 2
で割り切れる数値で 10
より大きい場合、echo "$a is even number and greater than 10."
文が実行されます。
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn