Bash で if...else 文を使用する方法

Suraj Joshi 2023年1月30日
  1. バッシュの if
  2. Bashif ... else
  3. Bashif...elif...else
  4. Bash のネストされた if
Bash で if...else 文を使用する方法

条件付き文はほとんどのプログラミング言語で意思決定のために使われています。条件文は特定の条件が満たされた場合にのみ文や文を実行できるようにします。ほとんどのプログラミング言語では、if ... else が条件文として使われています。バッシュでは、条件文として ifif...elif...elif...elseif ... else やネストされた if 文もあります。

バッシュの if

if ステートメントの構文

if Test-Expression
then
  Statements
fi

上の例では、Test-ExpressionTrue の場合、Statements が実行されます。キーワード fi を用いて if 文を終了します。

もし Test-ExpressionTrue でない場合、Statements は何も実行されません。

コードをより読みやすく整理するために、4 スペースまたは 2 スペースのインデントを使用することができます。

例:Bashif ステートメント

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 文が実行されます。

Bashif ... else

if ... else ステートメントの構文

if Test-Expression
then
  Statements-1

else
  Statements-2
fi

この例では、Test-ExpressionTrue の場合は Statements-1 が実行され、そうでない場合は Statements-2 が実行されます。if ... else 文を終了させるには、fi キーワードを用います。

例:Bashif...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" が実行されます。

Bashif...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-1True の場合、Statements-1 が実行されます。そうでなければ、Test-Expression-2True の場合は Statements-2 が実行されます。

どちらのテスト式も True ならば Statements-3 が実行されます。

elif 文は好きなだけ持つことができ、else 文はオプションです。

例:Bashif...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
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn