格式
“#”代表空格,不可缺少
- [# param1#op# param2 #]
這種帶比較操作符的形式,op左右必須使用空格隔開.
如 [# “3”==”2” #] 這種缺少空格的寫法會得到結果“true”,當然實際應為”false”.
- 變量的引用應使用雙引號括起來 [# -z “$name” #].
*********************
name="Jim"
[ $name == "Jack" ] #將會變成 [ Jim == "Jack" ], 也就出現錯誤了.
*********************
- 常量應該使用雙引號或單引號括起來 [# ‘1’#==#’10’ #].
- 更好的書寫方式:
參數****************************
a. 中括號內的每一個組件都用空格隔開(可謂釜底抽薪)
b. 變量都以雙引號括起來
****************************
-b file 若文件存在且是一個塊特殊文件,則為真-c file 若文件存在且是一個字符特殊文件,則為真-d file 若文件存在且是一個目錄,則為真-e file 若文件存在,則為真-f file 若文件存在且是一個規則文件,則為真-g file 若文件存在且設置了SGID位的值,則為真-h file 若文件存在且為一個符合鏈接,則為真-k file 若文件存在且設置了"sticky"位的值-p file 若文件存在且為一已命名管道,則為真-r file 若文件存在且可讀,則為真-s file 若文件存在且其大小大於零,則為真-u file 若文件存在且設置了SUID位,則為真-w file 若文件存在且可寫,則為真-x file 若文件存在且可執行,則為真-o file 若文件存在且被有效用戶ID所擁有,則為真-z string 若string長度為0,則為真-n string 若string長度不為0,則為真string1 = string2 若兩個字符串相等,則為真string1 != string2 若兩個字符串不相等,則為真**********************************************************參與比較的數字必須能夠轉化為整數,話說那里有這個語法的manual?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,則為真**********************************************************! expr 若expr為假則復合表達式為真。expr可以是任何有效的測試表達式expr1 -a expr2 若expr1和expr2都為真則整式為真expr1 -o expr2 若expr1和expr2有一個為真則整式為真
