表示式的類別:
數值表示式:
-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 $?
存在性測試
-a file:這個很少用,一般用-e
-e file:檔案存在測試,存在為真。
存在性及類別測試
-b file:是否存在且為塊裝置檔案;
-c file:是否存在且為字元裝置檔案;
-ffile:是否存在且為普通檔案,存在為真,否則為假
-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指令碼攻略
字串比較
使用字串比較時,最好用雙中括號,因為有時候採用單個中括號會產生錯誤,所以最好避開它們。
可以用下面的方法檢查兩個字串,看看它們是否相同。
也可以檢查兩個字串是否不同。
我們還可以檢查字串的字母序情況,具體如下所示。
邏輯運算:
第一種方式:
command1
&&command2 注:先執行command1,只有在command1執行成功時,command2才能夠執行
command1
||command2 注:先執行command1,只有在command1執行失敗時,command2才能夠執行
! command
[ -e file ] && [ -r file ]
存在且可讀
第二種方式:
expression1
-aexpression2
expression1
-oexpression2
示例
bash指令碼程式設計的條件測試
如何編寫測試表示式來實現所需的測試 1 執行命令,並利用命令狀態返回值來判斷 0 成功 1 255 失敗 2 測試表示式 test expression expression expression expression兩端必須有空格 bash的測試型別 數值測試 eq 是否等於 ne 是否不等於 g...
BASH指令碼程式設計之條件測試
條件測試 判斷某需求是否滿足,需要由測試機制來實現 如何編寫測試表示式以實現所需的測試 1 執行命令,並利用命令狀態返回值來判斷 0 成功 1 255 失敗 2 測試表示式 test expression expression expression 注意 expression兩端必須有空白字元,否則...
bash指令碼條件測試總結
一 if語句的結構 分為以下三種 單分支 雙分支 多分支 單分支if語句if condition is true then 分支fi雙分支if語句if condition is true then 分支else 分支fi多分支if語句if condition is true then 分支elif ...