IF 條件判斷式在 Shell Script中算是基本盤,不管是判斷值或是驗證布林值。做出不同的資料組合判斷。
以下把常用的if 結構及if條件判斷式列出來,方便一次快速做參考。
同時也列出較少使用的雙條件結構寫法,避免有需要不用寫到兩個 if 來做出雙重判斷。
If 結構
if 寫法
#!/bin/sh
if [ 條件式/判斷式 ]
then
陳述句一
fi
條件判斷式一 成立執行 陳述句一。
if else 寫法
#!/bin/sh
if [ 條件判斷一 ]
then
陳述句一
else
陳述句二
fi
條件判斷式一 成立執行 陳述句一。
條件判斷式一 不成立執行 陳述句二。
if else if else 寫法
#!/bin/sh
if [ 條件判斷式一 ]
then
陳述句一
elif [ 條件判斷式二 ]
then
陳述句二
else
陳述句三
fi
條件判斷式一 成立執行 陳述句一。
條件判斷式一 不成立執行 條件判斷式二。
條件判斷式二 成立執行 陳述句二。
條件判斷式二 不成立執行 陳述句三。
IF 雙判斷式
if [ 條件判斷式一 ] && [ 條件判斷式二 ]
then
陳述句一
fi
此結構下需要 條件判斷式一 及 條件判斷式二 都成立,才會執行 陳述句一。
下面為另外一種判斷方式程式碼如下
if [ 條件判斷式一 ] || [ 條件判斷式二 ]
then
陳述句一
fi
此結構下需要 條件判斷式一 或 條件判斷式二 其中一個成立,就會執行 陳述句一。
IF 判斷條件
字串比較
判斷式 | 說明 |
$str1 = $str2 | $str1 與 $str2 字串是否相同 |
$str1 == $str2 | $str1 與 $str2 字串是否相同 |
$str1 != $str2 | $str1 與 $str2 字串是否不相同 |
-n $str | 當字串有值不是 null 回傳 true |
-z $str | 當字串沒值是 null 回傳 true |
數字比較
判斷式 | 說明 |
$a -eq $b | a 等於 b 傳回 ture |
$a -ne $b | a 不等於 b 傳回 ture |
$a -gt $b | a 大於 b 傳回 ture |
$a -ge $b | a 大於等於 b 傳回 ture |
$a -lt $b | a 小於 b 傳回 ture |
$a -le $b | a 小於等於 b 傳回 ture |
檔案判斷
判斷式 | 說明 |
-d file | file 是目錄傳回 ture |
-f file | file 是檔案傳回 ture |
-r file | file 可以讀傳回 ture |
-s file | file 儲存容量大於 0 傳回 ture |
-w file | file 可以寫入傳回 ture |
-x file | file 可以執行傳回 ture |
-L file | file 為軟連結傳回 ture |
file1 -nt file2 | file1 比 file2 新傳回 ture |
file1 -ot file2 | file1 比 file2 舊傳回 ture |
file1 -ef file2 | file1 與 file2 為同一檔案傳回 ture |