HOWTO · Linux

如何在 Bash 中使用 if...else 語句

我們可以在 Bash 中使用 if...else 語句來執行特定條件是否滿足的語句。

本頁內容

條件語句在幾乎所有的程式語言中都很普遍,用於決策。它們只允許在滿足特定條件的情況下執行一條或多條語句。if ... else 在大多數程式語言中被用作條件語句。在 Bash 中,我們還有 ifif...elif...elferif ... else 和巢狀的 if 語句作為條件語句。

Bash 中的 if 語句

if 語句的語法

if Test-Expression
then
  Statements
fi

在上面的例子中,如果 Test-ExpressionTrue,則執行 Statementsfi 關鍵字用於結束 if 語句。

如果 Test-Expression 不是 TrueStatements 都不會被執行。

為了使我們的程式碼看起來更易讀,更有條理,我們可以使用 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

它接受使用者提供的數字,只有當數字是偶數時才會輸出。

如果數字是偶數,那麼當數字除以二時,餘數為零,因此測試表示式為 True,這樣 echo 語句就會被執行。

Bash 中的 if ... else 語句

if ... else 語句的語法

if Test-Expression
then
  Statements-1

else
  Statements-2
fi

在這個例子中,如果 Test-ExpressionTrue,則執行 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 時,餘數為零;因此,測試表示式為 True,語句 echo "$n is even number" 得到執行。

如果數字是奇數,餘數不為零;因此,測試表示式為 False,語句 echo "$n is odd number"被執行。

if...elif...else 語句在 Bash 中的應用

if...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 語句是可選的。

例子: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

它接受兩個數字作為使用者的輸入,並根據哪個測試表示式為真列印結果。

如果 a<b,程式列印 a is less than b

如果 a>b,程式列印 a is greater then 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 除以 2 且大於 10,則執行 echo "$a is even number and greater than 10."語句。