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

Suraj Joshi 2023年1月30日 2020年9月19日
  1. Bash 中的 if 語句
  2. Bash 中的 if ... else 語句
  3. if...elif...else 語句在 Bash 中的應用
  4. 巢狀在 Bash 中的 if 語句
如何在 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."語句。

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn