Bash if-else語句


在本小節中,我們將了解如何在Bash指令碼中使用if-else語句來完成自動化任務。

Bash if-else語句用於在語句的順序執行流程中執行條件任務。有時,如果if條件為真,我們想處理一組特定的語句,但是如果if條件為假,則要處理另一組語句。要執行此類操作,可以應用if-else機制。們可以使用if語句應用條件。

if-else語法

Bash Shell指令碼中if-else語句的語法定義如下:

if [ condition ];  
then  
   <if block commands>  
else  
  <else block commands>  
fi

以上語法有幾個要點:

  • 可以使用一組使用條件運算子連線的一個或多個條件。
  • 其他塊命令包括一組在條件為假時執行的動作。
  • 條件表示式後的分號(;)是必須的。

參考以下範例,演示如何在Bash指令碼中使用if-else語句:

範例1
下面的範例包含兩個不同的場景,在第一個if-else語句中條件為true,在第二個if-else語句中條件為false

指令碼檔案:ifelse-demo1.sh

#!/bin/bash  

#when the condition is true  
if [ 10 -gt 3 ];  
then  
  echo "10 is greater than 3."  
else  
  echo "10 is not greater than 3."  
fi  

#when the condition is false  
if [ 3 -gt 10 ];  
then  
  echo "3 is greater than 10."  
else  
  echo "3 is not greater than 10."  
fi

執行上面範例程式碼,得到以下結果:
ifelse示例1

在第一個if-else表示式中,條件(10 -gt 3)為true,因此執行if塊中的語句。而在另一個if-else表示式中,條件(3 -gt 10)為false,因此執行else塊中的語句。

範例2
在此範例中,演示如何在Bash中的if-else語句中使用多個條件。使用bash邏輯運算子來加入多個條件。
指令碼檔案:ifelse-demo2.sh

#!/bin/bash  

# When condition is true  
# TRUE && FALSE || FALSE || TRUE  
if [[ 10 -gt 9 && 10 == 9 || 2 -lt 1 || 25 -gt 20 ]];  
then  
  echo "Given condition is true."  
else  
  echo "Given condition is false."  
fi  

# When condition is false  
#TRUE && FALSE || FALSE || TRUE  
if [[ 10 -gt 9 && 10 == 8 || 3 -gt 4 || 8 -gt 8 ]];  
then  
  echo "Given condition is true."  
else  
  echo "Given condition is not true."  
fi

執行上面範例程式碼,得到以下結果:
if-else示例2

在一行if-else語句

可以在一行中編寫完整的if-else語句以及命令。需要遵循以下一些規則才能在一行中使用if-else語句:

  • ifelse塊的語句末尾使用分號(;)。
  • 使用空格作為分隔符來追加其他語句。

下面給出一個範例,演示如何在單行中使用if-else語句:

範例

指令碼檔案:ifelse-single-line.sh

#!/bin/bash  

read -p "Enter a value:" value  
if [ $value -gt 9 ]; then echo "The value you typed is greater than 9."; else echo "The value you typed is not greater than 9."; fi

執行上面範例程式碼,得到以下結果:
在一行if-else語句

巢狀if-else語句

與巢狀的if語句一樣,if-else語句也可以在另一個if-else語句中使用。在Bash指令碼中將它稱為巢狀if-else

下面是一個範例,演示如何在Bash中巢狀if-else語句。

指令碼檔案:ifelse-nested.sh

#!/bin/bash  

read -p "Enter a value:" value  
if [ $value -gt 9 ];  
then  
  if [ $value -lt 11 ];  
  then  
     echo "$value>9, $value<11"  
  else  
    echo "The value you typed is greater than 9."  
  fi  
else echo "The value you typed is not greater than 9."  
fi

執行上面範例程式碼,得到以下結果:
嵌套if-else語句