簡單理解,判斷某些條件是否成立,成立執行一種命令,不成立執行另外一種命令。linux
格式:[ <測試表達式> ] 你們要掌握着一種,注意測試表達式兩邊要留空格git
好習慣:先敲一對[],而後退格輸入2個空格[],最後再回退一個空格開始輸入[ -f file ]github
[root@chensiqi1 ~]# [ -f /etc/hosts ] && echo 1 || echoshell
1測試
[root@chensiqi1 ~]# [ -f /etc/hosts1 ] && echo 1 || echo 0設計
03d
[root@chensiqi1 ~]# [ ! -f /etc/hosts1 ] && echo 1 || echo 0ci
1字符串
#在作測試判斷時,不必定用上面的方法,用下面的寫一半方法更簡潔rpc
[root@chensiqi1 ~]# [ -f /etc/hosts ] && echo 1
1
[root@chensiqi1 ~]# [ -f /etc/hosts1 ] || echo 0
0
#系統腳本
[root@chensiqi1 ~]# vi /etc/init.d/nfs
....
[ -x /usr/sbin/rpc.nfsd ] || exit 5
[ -x /usr/sbin/rpc.mountd ] || exit 5
[ -x /usr/sbin/exportfs ] || exit 5
字符串測試操做符的做用:比較兩個字符串是否相同,字符串長度是否爲零,字符串是否爲NULL。Bash區分零長度字符串和空字符串。
|經常使用字符串測試操做符|說明|
|--|--|
|-z "字符串"|若串長度爲0則真,-z理解爲zero|
|-n 「字符串」|若串長度不爲0則真,-n理解爲no zero|
|「串1」=「串2」|若串1等於串2則真,可使用「==」代替「=」|
|「串1」!="串2"|若串1不等於串2則真,但不能使用「!==」代替「!=」|
特別注意,以上表格中的字符串測試操做符號務必要用「」引發來。[ -z "$string"]字符串比較,比較符號兩端最好有空格,參考系統腳本。
[ "$password" = "john" ]
提示:
[,"password",=,"join",]之間必須存在空格
[root@chensiqi1 ~]# sed -n '30,31p' /etc/init.d/network
# Check that networking is up.
[ "${NETWORKING}" = "no" ] && exit 6
在[]中能夠用>和<,但須要用\轉義,雖然不報錯,但結果不對。但仍是不要混用!
1)多個[ ] 之間的邏輯操做符是 &&或| |
2)&& 前面成功執行後面
3)||前面不成功執行後面
4)與 全部子表達式都成立,總表達式才成立
5)或 只要有一個子表達式成立,那麼總表達式就會成立。只有當全部子表達式不成立,總表達式纔會不成立。
6)非 取反
[root@oldboyedu ~]# [ 1 = 1 -a 2 -lt 3 ] && echo True || echo False
True
[root@oldboyedu ~]# [ 1 = 1 -a 2 -lt 1 ] && echco True || echo False
False
[root@oldboyedu ~]# [ 1 = 1 -o 2 -lt 1 ] && echo True || echo False
True
[root@oldboyedu ~]# [ 1 != 1 -o 2 -lt 1 ] && echo Rrue || echo False
False
[ -f "$file" ] && echo 1 || echo 0
if [ -f "file" ];then echo 1;else echo 0;fi
一、默寫文件中設計到的操做符
二、書寫測試表達式的習慣是什麼?