標籤:操作 測試 命名 括弧 相同 ssi 目錄 sgi sgid
3種測試命令:
test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]
注意:EXPRESSION前後必須有空白字元
bash的測試類型
數值測試:
-eq:是否相等
-ne:是否不等
-ge:是否大於等於
-le:是否小於等於
-gt:是否大於
-lt:是否小於
字串測試:
=或==:是否等於
>:是否大於
<:是否小於
!=:是否不等於
=~:左側字串是否能夠被右側PATTERN所匹配 [[ ]]中使用
-z "STRING":測試字串是否為空白,空則為真
-n "STRING":測試字串是否非空,不空則為真
注意:用於字串比較時用到的運算元都應該使用引號括起來
檔案測試:
存在性測試:
-a FILE:同下
-e FILE:檔案存在性測試,存在為真,否則為假
存在性及類別測試:
-b FILE:是否存在且為塊裝置檔案
-c FILE:是否存在且為字元裝置檔案
-d FILE:是否存在且為目錄檔案
-f FILE:是否存在且為普通檔案
-h FILE 或-L FILE:是否存在且為符號連結檔案
-p FILE:是否存在且為具名管道檔案
-S FILE:是否存在且為通訊端檔案
檔案許可權測試:
-r FILE:是否存在且可讀
-w FILE:是否存在且可寫
-x FILE:是否存在且可執行
檔案特殊許可權測試:
-g FILE:是否存在且擁有sgid許可權
-u FILE:是否存在且擁有suid許可權
-k FILE:是否存在且擁有sticky許可權
檔案大小測試:
-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
組合條件測試:
邏輯運算:
[ ]中使用:
EXPRESSION1 -a EXPRESSION2:2個條件同時為真,則結果為真
EXPRESSION1 -o EXPRESSION2:2個條件中其中一個條件為真,則結果為真
! EXPRESSION:條件為假時,則結果為真
[[ ]]或[ ] ** [ ]中使用: 註:**為&&或||
&&: 左右兩邊條件或命令同時為真,則結果為真
||:左右兩邊條件或命令其中一個為真時,則結果為真
!:條件或命令為假時,則結果為真
註:[ ]中使用小括弧需要轉義即\(\),[[ ]]則無需轉義
bash Shell條件測試