shell 的條件測試
概述
條件測試是 shell 編程中非常重要的一個概念,它允許我們根據某個條件是否滿足,來選擇執行相應的任務。
條件測試的語法
shell 中的條件測試語法如下:
[ 條件表達式 ]
如果條件表達式為真,則返回 0,表示測試成功;如果條件表達式為假,則返回非 0 值,表示測試失敗。
條件表達式
條件表達式可以是任何可以表示真值或假值的表達式,包括字符串比較、算術比較、文件測試、邏輯運算等。
字符串比較
字符串比較可以使用以下操作符:
操作符 | 含義 |
---|---|
-z str | str 為空時,返回真 |
-n str | str 不為空時,返回真 |
str1 = str2 | str1 等于 str2 時,返回真 |
str1 != str2 | str1 不等于 str2 時,返回真 |
drive_spreadsheet導出到 Google 表格
算術比較
算術比較可以使用以下操作符:
操作符 | 含義 |
---|---|
-eq | 等于 |
-ne | 不等于 |
-gt | 大于 |
-ge | 大于或等于 |
-lt | 小于 |
-le | 小于或等于 |
drive_spreadsheet導出到 Google 表格
文件測試
文件測試可以使用以下操作符:
操作符 | 含義 |
---|---|
-f file | file 存在且是一個普通文件時,返回真 |
-d file | file 存在且是一個目錄時,返回真 |
-e file | file 存在時,返回真 |
-s file | file 存在且大小大于 0 時,返回真 |
-r file | file 存在且可讀時,返回真 |
-w file | file 存在且可寫時,返回真 |
-x file | file 存在且可執行時,返回真 |
drive_spreadsheet導出到 Google 表格
邏輯運算
邏輯運算可以使用以下操作符:
操作符 | 含義 |
---|---|
&& | 邏輯與,都為真時,返回真 |
\ | \ |
! | 邏輯非 |
drive_spreadsheet導出到 Google 表格
擴展知識
- 條件測試的返回值可以被用作變量的值,或者作為判斷語句的條件。
- 條件測試可以嵌套使用,以實現更復雜的邏輯判斷。
- 條件測試可以與 case 選擇語句配合使用,以實現更靈活的條件判斷。
實驗示例
以下是一些使用條件測試的實驗示例:
判斷變量是否為空
#!/bin/bashname="Josh"if [ -z "$name" ]; thenecho "變量為空"
elseecho "變量不為空"
fi
運行該腳本,將輸出以下結果:
變量不為空
判斷文件是否存在
#!/bin/bashfile="/etc/passwd"if [ -e "$file" ]; thenecho "文件存在"
elseecho "文件不存在"
fi
運行該腳本,將輸出以下結果:
文件存在
判斷字符串是否相等
#!/bin/bashstr1="hello"
str2="world"if [ "$str1" == "$str2" ]; thenecho "字符串相等"
elseecho "字符串不相等"
fi
運行該腳本,將輸出以下結果:
字符串不相等
總結
條件測試是 shell 編程中非常重要的一個概念,它可以幫助我們實現復雜的邏輯判斷。