IF 陳述式

Bash 指令稿入門

Alex Scriven

Data Scientist

基本 IF 陳述式

Bash 中基本的 IF 陳述式結構如下:

if [ CONDITION ]; then

# SOME CODE
else # SOME OTHER CODE
fi

兩個小技巧:

  • 中括號與條件元素之間要留空白(第一行)
  • 關閉中括號後加分號 ];
Bash 指令稿入門

IF 與字串

我們可以在 IF 陳述式中做基本字串比較:

x="Queen"

if [ $x == "King" ]; then
echo "$x is a King!"
else echo "$x is not a King!" fi
Queen is not a King!

你也可以用 != 表示「不等於」

Bash 指令稿入門

算術 IF(作法 1)

算術 IF 陳述式可使用雙括號結構:

x=10

if (($x > 5)); then echo "$x is more than 5!" fi
10 is more than 5!
Bash 指令稿入門

算術 IF(作法 2)

算術 IF 也可用中括號加算術旗標,而非使用(>, <, =, != 等):

  • -eq 表示「等於」
  • -ne 表示「不等於」
  • -lt 表示「小於」
  • -le 表示「小於或等於」
  • -gt 表示「大於」
  • -ge 表示「大於或等於」
Bash 指令稿入門

算術 IF 範例

以下用中括號符號重現上一個例子:

x=10
if [ $x -gt 5 ]; then
    echo "$x is more than 5!"
fi
10 is more than 5!
Bash 指令稿入門

其他 Bash 條件旗標

Bash 也提供多種與檔案相關的旗標,例如:

  • -e 檔案存在
  • -s 檔案存在且大小大於 0
  • -r 檔案存在且可讀
  • -w 檔案存在且可寫

還有其他多種:

Bash 指令稿入門

在 Bash 使用 AND 與 OR

 

在 Bash 中要結合條件(AND)或使用 OR,可用下列符號:

  • && 表示 AND
  • || 表示 OR
Bash 指令稿入門

多重條件

在 Bash 中,你可以這樣串接多個條件:

x=10
if [ $x -gt 5 ] && [ $x -lt 11 ]; then
    echo "$x is more than 5 and less than 11!"
fi

或使用雙重中括號符號:

x=10
if [[ $x -gt 5 && $x -lt 11 ]]; then
    echo "$x is more than 5 and less than 11!"
fi
Bash 指令稿入門

IF 與指令列程式

你也可以直接在條件中使用許多指令列程式,並且「移除中括號」。

例如,若 words.txt 檔案內含有 'Hello World!':

if grep -q Hello words.txt; then
    echo "Hello is inside!"
fi
Hello is inside!
Bash 指令稿入門

IF 與巢狀 shell

你也可以在條件中呼叫巢狀 shell(shell 中再啟一個 shell)。

我們把上一個例子改寫如下,結果相同:

if $(grep -q Hello words.txt); then
    echo "Hello is inside!"
fi
Hello is inside!
Bash 指令稿入門

一起來練習吧!

Bash 指令稿入門

Preparing Video For Download...