表達式的類别:
檔案表達式
數值表達式
字元串表達式
數值表達式:
-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,如需轉載請自行聯系原作者