if
語句在順序執(zhí)行代碼語句的流程中執(zhí)行條件性任務(wù)。根據(jù)設(shè)置的條件,判斷是否運行一段代碼語句。
在if
語句中,如果判斷為true
,則執(zhí)行給定的代碼語句進行相關(guān)操作。如果判斷為false
,則略過給定的代碼語句不進行相關(guān)操作。
基本語法:
if [ expression ];
then
statements
fi
注:
expression
是判斷表達式。statements
是給定的執(zhí)行語句。
&&
邏輯運算符使用多個條件:
if [ expression_1 ] && [ expression_2 ];
then
statements
fi
||
邏輯運算符使用多個條件:
if [ expression_1 ] || [ expression_2 ];
then
statements
fi
&&
和||
邏輯運算符:
if [[ expression_1 && expression_2 || expression_3 ]];
then
statements
fi
示例:
#!/bin/bash
## TRUE && TRUE
if [ 8 -gt 6 ] && [ 10 -eq 10 ];
then
echo "Conditions are true"
fi
## TRUE && FALSE
if [ "mylife" == "mylife" ] && [ 3 -gt 10 ];
then
echo "Conditions are false"
fi
執(zhí)行后得到以下結(jié)果:
Conditions are true
選項 | 描述 |
---|---|
! EXPRESSION |
檢查EXPRESSION 是否為假。 |
-n STRING |
檢查STRING 的長度是否大于零。 |
-z STRING |
檢查STRING 的長度是否為零(即為空) |
STRING1 == STRING2 |
檢查STRING1 是否等于STRING2 。 |
STRING1 != STRING2 |
檢查STRING1 是否不等于STRING2 。 |
INTEGER1 -eq INTEGER2 |
檢查INTEGER1 在數(shù)值上是否等于INTEGER2 。 |
INTEGER1 -gt INTEGER2 |
檢查INTEGER1 在數(shù)值上是否大于INTEGER2 。 |
INTEGER1 -lt INTEGER2 |
檢查INTEGER1在數(shù)值上是否小于INTEGER2。 |
-d FILE |
檢查FILE 是否存在并且它是一個目錄。 |
-e FILE |
檢查FILE是否存在。 |
-r FILE |
檢查FILE是否存在,并授予讀取權(quán)限。 |
-s FILE |
檢查FILE是否存在并且其大小大于零(表示它不為空)。 |
-w FILE |
檢查FILE是否存在并授予寫權(quán)限。 |
-x FILE |
檢查FILE 是否存在并授予執(zhí)行權(quán)限。 |
在 Bash 的實際運用中可能會需要多個 if 語句。這時可能就會出現(xiàn)在一個 if 語句中使用另一個 if 語句的情況,這被稱為嵌套 if 語句。 示例:
#!/bin/bash
#Nested if statement
if [ $1 -gt 50 ]
then
echo "Number is greater than 50."
if (( $1 % 2 == 0 ))
then
echo "and it is an even number."
fi
fi
執(zhí)行后得到以下結(jié)果:
Number is greater than 50.
and it is an even number.
更多建議: