linux 使用中括號進行條件判斷


 
 格式

“#”代表空格,不可缺少

  • [# 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有一個為真則整式為真


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM