Shell 條件判斷

2021-09-20 02:57:49 字數 1792 閱讀 1866

條件判斷的結果為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 兩數相等為真 ...