寫腳本時;有時要判斷字符串是否相等,數字測試。這對後面學習的shell語句,循環,條件語句做好基礎。
條件判斷格式
- test condition : test命令
- [ condition ] : []
- 命令執行的結果 :例如cd lottu.
注意:使用[] 要注意在條件兩邊要加上空格。
文件狀態測試
[db17 ~]$ test -f a
[db17 ~]$ echo $?
0
[@db17 ~]$ test -f c
[@db17 ~]$ echo $?
1
[@db17 ~]$ ls c
ls: c: No such file or directory
[@db17 ~]$ echo $?
2
[@db17 ~]$ test -d lottu
[@db17 ~]$ echo $?
0
備註:1. 關係運算符只支持數字,不支持字符串,除非字符串的值是數字。
2. 判斷兩個數是否相等;還可以用 "==", "!=" 。也是數字專用。
其中var=10
[db17 ~]$ [ ${var} == 5 ]
[db17 ~]$ echo $?
1
[db17 ~]$ [ ${var} -lt 5 ]
[db17 ~]$ echo $?
1
[db17 ~]$ [ ${var} -gt 5 ]
[db17 ~]$ echo $?
0
[db17 ~]$ [ ${var} -eq 5 ]
[db17 ~]$ echo $?
1
布爾運算符
測試
b=5
[db17 ~]$ [ ! $b == 5 ]
[db17 ~]$ echo $?
1
[db17 ~]$ [ ! -f a ] #判斷文件是否是普通文件
[db17 ~]$ echo $?
1
字符串運算符
備註:[ $a ]這個有點意思。跟awk相同;雖然用法沒awk那麼靈活。
-
[17 ~]$ [ $b ]```
- [db17 ~]$ echo $?
- 0
- [db17 ~]$ echo $b
- 5
- [db17 ~]$ unset b
- [db17 ~]$ echo $b
- [db17 ~]$ [ $b ]
- [db17 ~]$ echo $?
- 1
命令執行結果
一個命令執行的結果也可以充當條件判斷;若有幾個命令;是拿最後一個命令充當結果的判斷
[db17 ~]$ ls
a b bin lottu
[db17 ~]$ echo $?
0
[db17 ~]$ cd li0924
-bash: cd: li0924: No such file or directory
[db17 ~]$ echo $?
1
[db17 ~]$ ls;cd li0924
a b bin lottu
-bash: cd: li0924: No such file or directory
[db17 ~]$ echo $?
1
[note]
這篇在後面的if...then...fi 是條件語句會經常用到。