條件判斷的結果為0表示真,為1表示假,正好與c語言的相反。
用於比較的條件分為以下四種:
條件判斷的格式分為以下兩種:
字串比較
說明string_1=string_2
如果string_1和string_2兩個字串相等則返回真,否則返回假
string_1!=string_2
如果string_1和string_2兩個字串不相等則返回真,否則返回假
-z string
如果字串string的長度為0則返回真,否則返回假
-n string
或string 如果字串string長度不為0則返回真,否則返回假
示例:
[root@]# str1="abc"
[root@]# str2="123"
[root@]# test $str1=$str2
[root@]# echo $?
1[root@]# test -n $str1
0
算術比較
說明num_1 -eq num_2
如果num_1和num_2相等則返回真,否則返回假
num_1 -ne num_2
如果num_1不等於num_2則返回真,否則返回假
num_1 -gt num_2
如果num_1大於num_2則返回真,否則返回假
num_1 -lt num_2
如果num_1小於num_2則返回真,否則返回假
num_1 -le num_2
如果num_1小於等於num_2則返回真,否則返回假
num_1 -ge num_2
如果num_1大於等於num_2則返回真,否則返回假
示例:
[root@]# a=1
[root@]# b=2
[root@]# test $a -eq $b
[root@]# echo $?
1
檔案屬性比較
說明-f fn
如果fn存在且fn為普通檔案則返回真,否則返回假。file
-b fn
如果fn存在且fn為塊裝置則返回真,否則返回假。block
-e fn
如果n存在則返回真,否則返回假。exist
-d fn
如果fn存在且fn為目錄則返回真,否則返回假。directory
-r fn
如果in存在且fn可讀則返回真,否則返回假。read
-w fn
如果fn存在且fn可寫則返回真,否則返回假。write
-x fn
如果n存在且fn可執行則返回真,否則返回假。execute
-ofm 如果fn存在且被當前使用者擁有則返回真,否則返回假。
-l fn
如果m存在且fn為符號鏈結則返回真,否則返回假。
示例:(判斷first.sh是否可寫)
[root@]# test -w first.sh
0
邏輯比較
說明邏輯與-a
condition1-a condition2,如果兩個條件都為真,則結果為真。
邏輯或-o
condition1-o condition2,如果兩個條件有乙個為真,則結果為真。
邏輯非!
! condition,結果與condition相反。
示例:(判斷first.sh是否不可寫)
[root@]# !test -w first.sh
1
Shell條件判斷
b file 若檔案存在且是乙個塊特殊檔案,則為真 c file 若檔案存在且是乙個字元特殊檔案,則為真 d file 若檔案存在且是乙個目錄,則為真 e file 若檔案存在,則為真 f file 若檔案存在且是乙個規則檔案,則為真 g file 若檔案存在且設定了sgid位的值,則為真 h fi...
Shell 條件判斷
傳統if 從句子 以條件表示式作為 if條件 if 條件表示式 then command command command else command command fi條件表示式 檔案表示式 if f file 如果檔案存在 if d 如果目錄存在 if s file 如果檔案存在且非空 if r ...
Shell條件判斷
1 字串判斷 str1 str2 當兩個串有相同內容 長度時為真 str1 str2 當串str1和str2不等時為真 n str1 當串的長度大於0時為真 串非空 z str1 當串的長度為0時為真 空串 str1 當串str1為非空時為真 2 數字的判斷 int1 eq int2 兩數相等為真 ...