整數比較
方法一:[ ] 或 [[ ]]
(1) 此方法需要使用整數比較運算子。[標註:equal 等於 greater 大於 less-then 小於]
(2) 使用時一定要注意前後一定要有的空格:[ num1 -eq num2 ] [[ num1 -eq num2 ]]
方法二:(( ))
(1) 此方法使用的是類似數學運算比較的運算子:== >= <= !=
# a=2;b=3 # [ $a -eq $b ];echo $? 1 # [ $a -lt $b ];echo $? 0 # (($a==$b));echo $? 1 # (($a<=$b));echo $? 0 # (($a!=$b));echo $? 0 # ((10-2==8));echo $? 0 # ((10-2!=8));echo $? 1
字串比較
方法一:[ ] 或 [[ ]]
(1) 使用的比較運算子是:= !=
(2) 如果要使用萬用字元,要用[[ ]]
(3) 寫的時候一定要注意等號兩邊都要有空格
# string0="";string1="abc" ===判斷字串是否為空=== # [ -z $string0 ];echo $? 0 # [ -z $string1 ];echo $? 1 # [ $string1 = "abc" ];echo $? 0 # [ $string1 != "abc" ];echo $? 1 # [[ $string1 = ??? ]];echo $? 0 # [[ $string1 = a* ]];echo $? 0
方法二:test
-z 判斷字串是否為空,若為空則為真
-n 判斷字串是否為不空,若為不空則為真
檔案測試
檔案型別判斷:
-e 測試目錄或檔案是否存在(exist)
-f 測試該檔名是否存在且為檔案(file)
-d 測試該檔名是否存在且為目錄(directory)
-L 測試該檔名是否存在且為連結檔案(Link)
-b 測試該檔名是否存在且為塊裝置(block)
-c 測試該檔名是否存在且為字元裝置
-p 測試該檔名是否存在且為管道檔案
檔案許可權判斷:
-s 測試檔案是否存在且內容非空(應當注意有1個空格也是非空)
-r 測試當前使用者是否有可讀許可權
-w 測試當前使用者是否有可寫許可權
-x 測試當前使用者是否有可執行許可權
-u 測試檔名是否存在並且具有SUID屬性
-g 測試檔名是否存在並且具有SGID屬性
-k 測試檔名是否存在並且具有Sticky屬性
邏輯操作符
-a 邏輯與:操作符兩邊均為真,結果為真,否則為假。
-o 邏輯或:操作符兩邊一邊為真,結果為真,否則為假。
! 邏輯否:條件為假,結果為真.
測試判斷常配合if/else語句使用,看看寫法: if [ -w file1 -a -w file2 ] if [ $? -eq 0 ] then echo "file1 file2 have write permisson" else echo "file1 file2 have not w permisson" fi if [ -d /tmp/dir1 ] then echo "the dir1 is existed" else echo "the dir1 is not existed" mkdir /tmp/dir1 fi