“#”代表空格,不可缺少
- [# 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有一個爲真則整式爲真
當用戶輸入Y/y時,輸出”Ok, continue”
當用戶輸入N/n時,輸出”Oh, interrupt!”
用戶輸入其他字符或空時,輸出”I don’t know your command!”