天天看點

bash條件測試

表達式的類别:

檔案表達式

數值表達式

字元串表達式

數值表達式:

    -gt:是否大于;     大于,全拼為greate than

    -ge:是否大于等于;   大于等于,全拼為greater equal

    -eq:是否等于;     相等,全拼為equal

    -ne:是否不等于;    不相等,全拼為not equal

    -lt:是否小于;     小于,全拼為less than

    -le:是否小于等于;   小于等于,全拼為less equal

字元串表達式:

    ==:是否等于;

    >:是否大于;

    <:是否小于;

    !=:是否不等于;

    =~:左側字元串是否能夠被右側的PATTERN所比對;

Note:此表達式一般用于` `中;

    -z "STRING":測試字元串是否為空,空則為真,不空則為假;

    -n "STRING":測試字元串是否不空,不空則為真,空則為假;

Note:用于字元串比較時乃至的操作數都應該使用引導

示例:

[root@C7-1 ~]# name=obama

[root@C7-1 ~]# [ -z "$name" ]

[root@C7-1 ~]# echo $?

1

存在性測試

-a FILE:這個很少用,一般用-e

-e FILE:檔案存在測試,存在為真。

存在性及類别測試

-b FILE:是否存在且為塊裝置檔案;

-c FILE:是否存在且為字元裝置檔案;

-f FILE:是否存在且為普通檔案,存在為真,否則為假

-d FILE:是否存在且為目錄檔案;

-h FILE或 -L FILE:存在且為符号連結檔案;

-p FILE:是否存在且為指令管道檔案;

-S FILE:是否存在且為套接字檔案;

檔案權限測試:

-r FILE:是否存在且可讀

-w FILE:是否存在且可寫

-x FILE:是否存在且可執行

檔案特殊權限測試:

-g FILE:是否存在且擁有sgid權限;

-u FILE:是否存在且擁有suid權限

-k FILE:是否存在且擁有stick權限

檔案大小測試:

-s FILE:是否存在且非空;

檔案是否打開:

-t fd:fd表示檔案描述符是否已打開且與某終端相關

-N FILE:檔案自動上一次被讀取之後是否被修改過;

-O FILE:目前有效使用者是否為檔案的屬主;

-G FILE:目前有效使用者是否為檔案的屬組;

雙目測試:

FILE1 -ef FILE2:FILE1與FILE2是否指向同一個裝置上的相同inode

FILE1 -nt FILE2:FILE1是否新于FILE2;

FILE1 -ot FILE2:FILE1是否舊于FILE2;

組合測試條件:

引用:

Linux Shell腳本攻略

字元串比較

使用字元串比較時,最好用雙中括号,因為有時候采用單個中括号會産生錯誤,是以最好避開它們。

可以用下面的方法檢查兩個字元串,看看它們是否相同。

[[ $str1 = $str2 ]]:當str1等于str2時,傳回真。也就是說,str1和str2包含的文本是一模一樣的。

[[ $str1 == $str2 ]]:這是檢查字元串是否相等的另一種寫法。

也可以檢查兩個字元串是否不同。

[[ $str1 != $str2 ]]:如果str1和str2不相同,則傳回真。

我們還可以檢查字元串的字母序情況,具體如下所示。

[[ $str1 > $str2 ]]:如果str1的字母序比str2大,則傳回真。

[[ $str1 < $str2 ]]:如果str1的字母序比str2小,則傳回真。

[[ -z $str1 ]]:如果str1包含的是空字元串,則傳回真。

[[ -n $str1 ]]:如果str1包含的是非空字元串,則傳回真。

邏輯運算:

第一種方式:

COMMAND1 && COMMAND2     注:先執行COMMAND1,隻有在COMMAND1執行成功時,COMMAND2才能夠執行

COMMAND1 || COMMAND2     注:先執行COMMAND1,隻有在COMMAND1執行失敗時,COMMAND2才能夠執行

! COMMAND

[ -e FILE ] && [ -r FILE ] 存在且可讀

第二種方式:

EXPRESSION1 -a EXPRESSION2

EXPRESSION1 -o EXPRESSION2

示例

<a href="http://s1.51cto.com/wyfs02/M00/8A/F0/wKiom1g_mImCElEpAAFRqAuQ_kI202.jpg" target="_blank"></a>

<a href="http://s5.51cto.com/wyfs02/M01/8A/F0/wKiom1g_mIqRIO_fAACEzQ30IRA972.jpg" target="_blank"></a>

<a href="http://s4.51cto.com/wyfs02/M01/8A/EB/wKioL1g_mIvQfUhFAAEYnWglBhc811.jpg" target="_blank"></a>

<a href="http://s4.51cto.com/wyfs02/M02/8A/F0/wKiom1g_mIyDtZFnAAH35LXC2PU079.jpg" target="_blank"></a>

[zdw@c7 ~]$ [ ! \( -r /tmp/file100.sh -o -w /tmp/file100.sh \) ]

[zdw@c7 ~]$ echo $?

d

      本文轉自cix123  51CTO部落格,原文連結:http://blog.51cto.com/zhaodongwei/1878403,如需轉載請自行聯系原作者

繼續閱讀