Shell中if等語句的條件判斷通常就是判斷一些測試選項的結果是否為真。 常用的文件類型測試選項(Linux中目錄、設備等都是用文件進行表示) -d 文件:判斷該文件是否存在,並且是否為目錄文件。 -e 文件:判斷該文件是否存在。 -f 文件:判斷該文件是否存在,並且是否為普通文件。 -L 文件:判 ...
Shell中if等語句的條件判斷通常就是判斷一些測試選項的結果是否為真。
常用的文件類型測試選項(Linux中目錄、設備等都是用文件進行表示)
- -d 文件:判斷該文件是否存在,並且是否為目錄文件。
- -e 文件:判斷該文件是否存在。
- -f 文件:判斷該文件是否存在,並且是否為普通文件。
- -L 文件:判斷該文件是否存在,並且是否為符號鏈接文件。
- -s 文件:判斷該文件是否存在,並且是否為非空。
可以使用兩種方式進行測試:
- test -e /root/install.log:使用test命令,測試該文件是否存在(執行成功則返回0)
- [ -e /root/install.log ]:使用方括弧的形式,測試該文件是否存在(註意首尾的空格不能少,且這種方式更常用)。
檢查測試項的運行結果可以使用如下表達式:[ -e /root/install.log ] && echo "yes" || echo "no"。
常用的文件許可權測試選項
- -r 文件:判斷該文件是否存在,並且該文件是否擁有讀許可權。
- -w 文件:判斷該文件是否存在,並且該文件是否擁有寫許可權。
- -x 文件:判斷該文件是否存在,並且該文件是否擁有執行許可權。
常用的兩個文件之間的測試選項
- 文件1 -nt 文件2:判斷文件1的修改時間是否比文件2的新。
- 文件1 -ot 文件2:判斷文件1的修改時間是否比文件2的舊。
- 文件1 -ef 文件2:判斷文件1是否和文件2的iNode號一致,可以理解為判斷兩個文件是否為同一個文件,這個選項常用於硬鏈接的判斷。
常用的兩個整數之間的測試選項
- 整數1 -eq 整數2:判斷整數1是否和整數2相等。
- 整數1 -ne 整數2:判斷整數1是否和整數2不相等。
- 整數1 -gt 整數2:判斷整數1是否大於整數2。
- 整數1 -lt 整數2:判斷整數1是否小於整數2。
- 整數1 -ge 整數2:判斷整數1是否大於等於整數2。
- 整數1 -le 整數2:判斷整數1是否小於等於整數2。
常用的字元串測試選項
- -z 字元串:判斷字元串是否為空(通常用於變數的值)。
- -n 字元串:判斷字元串是否為非空(通常用於變數的值)。
- 字元串1 == 字元串2:判斷字元串1和字元串2是否相等。
- 字元串1 != 字元串2:判斷字元串1和字元串2是否不相等。
常用的多重條件判斷
- 判斷1 -a 判斷2:邏輯與。
- 判斷1 -o 判斷2:邏輯與。
- !判斷式:邏輯非。