07-shell if條件測試和比較
阿新 • • 發佈:2018-08-04
less != 字符串 director 關系運算 鏈接文件 文件 -a 運算符
if條件測試常用的語法
- test <測試表達式>
- [ <測試表達式> ]
- [[ <測試表達式> ]]
- ((<測試表達式>))
test命令和[]測試操作符
- test <測試表達式>
- [ <測試表達式> ]
(這兩種語法是等價的)
測試操作符 全拼 說明 -d directory 文件存在且為目錄 -f file 文件存在且為普通文件 -e exist 文件存在 -r read 文件存在且可讀 -s size 文件存在且文件大小不為0 -w write 文件存在且可寫 -x exexutable 文件存在且可執行 -L link 文件存在且為鏈接文件 f1 -nt f2 newer than 文件f1比文件f2新 f1 -ot f2 olderthan 文件f1比文件f2舊 -n not zero 字符串的長度不為0 -z zero 字符串的長度為0 s1 = s2 字符串1等於字符串2 s1 != s2 字符串1不等於字符串2 -eq equal 相等 -ne not equal 不相等 -gt greater than 大於 -ge greater equal 大於等於 -lt less than 小於 -le less equal 小於等於 -a and 與 -o or 或 ! not 非 範例:
test -f /data/test.sh && echo true || echo false [ -f /data/test.sh ] && echo true || echo false
- 用[]測試變量時,如果被測試的變量不加雙引號,那麽測試結果可能會是不正確的:
file1=/etc/passwd [ -f "$file1" ] && echo 1 || echo 0 如果是文件實體路徑,那麽加引號與不加引號的結果是一樣的: [ -f "/etc/passwd" ] && echo 1 || echo 0 [ -f /etc/passwd ] && echo 1 || echo 0
[[]]測試操作符
- [[ <測試表達式> ]]
在[[]]中可以使用通配符等進行模式匹配 [[ ! $a =~ [1-3] ]] && echo 1 || echo 0
測試操作符 全拼 說明 -d directory 文件存在且為目錄 -f file 文件存在且為普通文件 -e exist 文件存在 -r read 文件存在且可讀 -s size 文件存在且文件大小不為0 -w write 文件存在且可寫 -x exexutable 文件存在且可執行 -L link 文件存在且為鏈接文件 f1 -nt f2 newer than 文件f1比文件f2新 f1 -ot f2 olderthan 文件f1比文件f2舊 -n not zero 字符串的長度不為0 -z zero 字符串的長度為0 s1 = s2 字符串1等於字符串2 s1 != s2 字符串1不等於字符串2 ==/= equal 相等 != not equal 不相等 > greater than 大於 >= greater equal 大於等於 < less than 小於 <= less equal 小於等於 && and 與 || or 或 ! not 非
(())測試操作符
- ((<測試表達式>))
- 常用與計算
- 對於整數的關系運算,也可以使用Shell的算術運算符(())
((3>2)) && echo 1 || echo 0 ((3!=2&&5==5)) && echo 1 || echo 0
07-shell if條件測試和比較