linux基礎學習-19.4-Shell腳本-條件測試

1、條件測試

什麼是條件測試呢?

簡單理解,判斷某些條件是否成立,成立執行一種命令,不成立執行另外一種命令。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

七、其餘

有的時候用[]比if要簡單

[ -f "$file" ] && echo 1 || echo 0

if [ -f "file" ];then echo 1;else echo 0;fi

練習題:

一、默寫文件中設計到的操做符

二、書寫測試表達式的習慣是什麼?

相關文章
相關標籤/搜索