12.1 if-then命令
- 不同于其他語言,if后面不是一個等式,而是命令,如果命令運行成功返回狀態碼0則運行then語句部分
- 把分號(;)放到命令尾部,可以將then語句寫在同一行
12.4 test命令
- 格式:
if test condition;then
- test命令沒有命令部分則返回非0退出狀態碼
- 命令如果是一個字符串會默認判斷是否為空
- 更常用的一種條件測試方式:方括號[ 命令 ]
- 第一個的方括號之后和第二個方括號之前必須留有空格
- 測試條件可以判斷的3類條件:①數值比較 ②字符串比較 ③文件比較
12.4.1 數值比較
- 格式:
if [ $value -gt 5 ];then
- 條件測試只處理整數
- 比較選項:
比較 | 描述 |
---|---|
n1 -eq n2 | equal,n1是否等于n2 |
n1 -ne n2 | no equal,n1是否不等于n2 |
n1 -ge n2 | greater equal,n1是否大于等于n2 |
n1 -gt n2 | greater,n1是否大于n2 |
n1 -le n2 | less equal,n1是否小于等于n2 |
n1 -eq n2 | less,n1是否小于n2 |
12.4.2 字符串比較
比較 | 描述 |
---|---|
s1 = s2 | s1是否等于s2 |
s1 != s2 | s1是否不等于s2 |
s1 < s2 | s1是否小于s2,比較使用Unicode編碼值 |
s1 > s2 | s1是否大于s2,比較實用Unicode編碼值 |
-n s1 | s1的長度是否不為0 |
-z s1 | s1長度是否為0 |
12.4.3 文件比較
比較 | 描述 |
---|---|
-d file | 存在且為目錄 |
-e file | 存在 |
-f file | 存在且為文件 |
-s file | 非空 |
-r file | 可讀 |
-w file | 可寫 |
-x file | 可執行 |
-o file | 屬于當前用戶 |
-G file | 屬于當前用戶的組 |
file1 -nt file2 | new than,file1比file2新 |
file1 -ot file2 | old than,file1比file2舊 |
12.5 復合條件測試(布爾)
- [ condition1 ] && [condition2]
- [ condition1 ] || [condition2]
12.6 if-then高級特性
- 使用單括號
①創建子進程測試命令 - 使用雙括號:使用高級數學表達式
- 使用雙方括號:比較字符串,提供模式匹配