test 條件表達式[ 條件表達式 ] 注意:括號與內容間必須有空格[[ 條件表達式 ]] (Bash 擴展,功能更強)(( 數值表達式 )) 僅用於數值比較前三種在基本功能上等價,[[ ]] 和 (( )) 提供更豐富的運算符且避免了許多陷阱。
標準語法 [ ] | 含義 | (( )) 語法 |
|---|---|---|
int1 -eq int2 | 相等 | int1 == int2 或 int1 -eq int2 |
int1 -ne int2 | 不等 | int1 != int2 |
int1 -lt int2 | 小於 | int1 < int2 |
int1 -gt int2 | 大於 | int1 > int2 |
int1 -le int2 | 小於等於 | int1 <= int2 |
int1 -ge int2 | 大於等於 | int1 >= int2 |
示例:
(( "2" < "3" )) # 返回 0 (真)
[ 1 -lt 3 ] # 返回 0 (真)
陷阱:(( )) 中 = 是賦值運算符,不能用於比較相等,需用 ==。
| 運算符 | 含義 |
|---|---|
-z string | 字符串為空(長度 0)返回真 |
-n string | 字符串非空返回真 |
str1 = str2 / str1 == str2 | 字符串相等返回真 |
str1 != str2 | 字符串不等返回真 |
str1 < str2 | 按字典序 str1 在 str2 之前(較少用) |
str1 > str2 | 按字典序 str1 在 str2 之後(較少用) |
示例:
A=str; B=str
[ $A = $B ] # 真
B=Str
[ $A = $B ] # 假(區分大小寫)
[ -n $B ] # 真
[ -z $B ] # 假
-e file:文件存在-f file:普通文件-d file:目錄-r/-w/-x file:可讀/可寫/可執行-s file:文件大小非零file1 -nt file2:file1 比 file2 新file1 -ot file2:file1 比 file2 舊[ expr1 -a expr2 ] 或 [[ expr1 && expr2 ]]:邏輯與[ expr1 -o expr2 ] 或 [[ expr1 || expr2 ]]:邏輯或[ ! expr ] 或 [[ ! expr ]]:邏輯非推薦使用 [[ ]] 和 (( )),語法更直觀,且避免了未加引號變量導致的語法錯誤。
VMware Workstation 9 安裝 Mac OS X 10.8 實戰筆記:硬體配置、EBIOS 錯誤、DMG 轉 ISO、CPU 虛擬化故障、vmx 修改、解鎖補丁
Windows 2000 與 Linux 雙系統安裝:使用 NT Loader 引導 Linux
vsftpd 500 OOPS: cannot change directory 錯誤秒解:SELinux 布林值一鍵修復
Tizen 作業系統誕生記:Linux 基金會主導、英特爾三星聯手打造的開源跨裝置平台
資深 Linux 系統管理員經驗談:從命令行到架構師的進階之路