檔案狀態測試
-b filename : 當filename 存在並且是塊檔案時返回真(返回0)
-c filename : 當filename 存在並且是字元檔案時返回真
-d pathname : 當pathname 存在並且是乙個目錄時返回真
-e pathname : 當由pathname 指定的檔案或目錄存在時返回真
-f filename : 當filename 存在並且是正規檔案時返回真
-g pathname : 當由pathname 指定的檔案或目錄存在並且設定了sgid 位時返回真
-h filename : 當filename 存在並且是符號鏈結檔案時返回真 (或 -l filename)
-k pathname : 當由pathname 指定的檔案或目錄存在並且設定了"粘滯"位時返回真
-p filename : 當filename 存在並且是命名管道時返回真
-r pathname : 當由pathname 指定的檔案或目錄存在並且可讀時返回真
-s filename : 當filename 存在並且檔案大小大於0 時返回真
-s filename : 當filename 存在並且是socket 時返回真
-t fd : 當fd 是與終端裝置相關聯的檔案描述符時返回真
-u pathname : 當由pathname 指定的檔案或目錄存在並且設定了suid 位時返回真
-w pathname : 當由pathname 指定的檔案或目錄存在並且可寫時返回真
-x pathname : 當由pathname 指定的檔案或目錄存在並且可執行時返回真
-o pathname : 當由pathname 存在並且被當前程序的有效使用者id 的使用者擁有時返回真(字母o 大寫)
-g pathname : 當由pathname 存在並且屬於當前程序的有效使用者id 的使用者的使用者組時返回真
file1 -nt file2 : file1 比file2 新時返回真
file1 -ot file2 : file1 比file2 舊時返回真
舉例:if [ -b /dev/hda ] ;then echo "yes" ;else echo "no";fi // 將列印 yes
test -c /dev/hda ; echo $? // 將列印 1 表示test 命令的返回值為1,/dev/hda 不是字元裝置
[ -w /etc/passwd ]; echo $? // 檢視對當前使用者而言,passwd 檔案是否可寫
測試時邏輯操作符
-a 邏輯與,操作符兩邊均為真,結果為真,否則為假。
-o 邏輯或,操作符兩邊一邊為真,結果為真,否則為假。
! 邏輯否,條件為假,結果為真。
舉例:[ -w result.txt -a -w score.txt ] ;echo $? // 測試兩個檔案是否均可寫
常見字串測試
-z string : 字串string 為空串(長度為0)時返回真
-n string : 字串string 為非空串時返回真
str1 = str2 : 字串str1 和字串str2 相等時返回真
str1 != str2 : 字串str1 和字串str2 不相等時返回真
str1 str2 : 按字典順序排序,字串str1 在字串str2 之後
舉例:name="zqf"; [ $name = "zqf" ];echo $? // 列印 0 表示變數name 的值和字串"zqf"相等
常見數值測試
int1 -eq int2 : 如果int1 等於int2,則返回真
int1 -ne int2 : 如果int1 不等於int2,則返回真
int1 -lt int2 : 如果int1 小於int2,則返回真
int1 -le int2 : 如果int1 小於等於int2,則返回真
int1 -gt int2 : 如果int1 大於int2,則返回真
int1 -ge int2 : 如果int1 大於等於int2,則返回真
舉例:x=1 ; [ $x -eq 1 ] ; echo $? // 將列印 0 表示變數x 的值等於數字1
x=a ; [ $x -eq "1" ] // shell 列印錯誤資訊 [: a: integer expression expected
Shell比較測試 查詢 結合xargs
var 2 var2 2 var不等於0 and var2大於2 是返回 it is true 否返回 it is false var ne 0 a var2 gt 2 echo it is true echo it is false it is false var不等於0 或 var2大於2 是返...
Shell基礎之 變數 比較 測試
一 變數 環境變數 位置變數 預定義變數 1 環境變數 env 檢視環境變數2 位置變數 vi location.sh bin bash sum expr 1 2 echo 1 2 sum location 12 34 則12為第乙個位置變數賦值為 1,32為第二個為 2。location為預定義變...
Shell指令碼的條件測試與比較
shell指令碼的條件測試與比較 一 shell指令碼的條件測試 通常,在bash的各種條件結構和流程控制結構中都要進行各種測試,然後根據測試結構執行不同的操作,有時也會與if等條件語句相結合,來完成測試判斷,以減少程式執行的錯誤。執行條件測試表示式後通常會返回 真 或 假 就行執行命令後返回的值為...