Linux shell條件表示式

Shell指令碼中的條件測試語法可以判斷表示式是否成立,若條件成立則返回數字0,否則便返回其他隨機數值。
按照測試物件來劃分,條件測試語句可以分為4種:
檔案測試語句;
邏輯測試語句;
整數值比較語句;
符串比較語句。
檔案測試
檔案測試即使用指定條件來判斷檔案是否存在或許可權是否滿足等情況的運算子

例子
1、判斷/etc/fstab是否為一個目錄型別的檔案,然後通過Shell直譯器的內設$?變數顯示上一條命令執行後的返回值。如果返回值為0,則目錄存在;如果返回值為非零的值,則意味著目錄不存在。
huanyu@ubuntu:~/shell$ [ -d /etc/fstab ] huanyu@ubuntu:~/shell$ echo $?

結果返回 1 ,表示這個檔案不是目錄。
2、判斷/etc/fstab是否為一般檔案,如果返回值為0,則代表檔案存在,且為一般檔案
huanyu@ubuntu:~/shell$ [ -f /etc/fstab ] huanyu@ubuntu:~/shell$ echo $?

3、判斷/dev/cdrom檔案是否存在,若存在則輸出Exist
huanyu@ubuntu:~/shell$ [ -e /etc/fstab ] && echo "Exist"

- Shell終端中邏輯“與”的運算子號是&&,它表示 當前面的命令執行成功後才會執行它後面的命令
4、判斷當前登入的使用者是否為非管理員身份
huanyu@ubuntu:~/shell$ [ $USER = root ] || echo "user"

- 邏輯“或”,它在Linux系統中的運算子號為 ||,表示 當前面的命令執行失敗後才會執行它後面的命令
5、判斷當前使用者是否為一個非管理員的使用者
huanyu@ubuntu:~/shell$ [ $USER != root ] || echo "administrator"
- 第三種邏輯語句是“非”,在Linux系統中的運算子號是一個歎號( ! ),它表示把條件測試中的判斷結果取相反值
6、綜合應用:判斷使用者型別
huanyu@ubuntu:~/shell$ [ $USER != root ] && echo "user" || echo "administrator"

整數比較
整數比較運算子僅是對數字的操作,不能將數字與字串、檔案等內容一起操作,而且不能想當然地使用日常生活中的等號、大於號、小於號等來判斷。因為等號與賦值命令符衝突,大於號和小於號分別與輸出重定向命令符和輸入重定向命令符衝突。

例子
1、判斷10是否等於15
huanyu@ubuntu:~/shell$ [ 10 -eq 15 ] huanyu@ubuntu:~/shell$ echo $?

返回是 1 ,說明表示式的值為錯
字串比較
字串比較語句用於判斷測試字串是否為空值,或兩個字串是否相同。它經常用來判斷某個變數是否未被定義(即內容為空值)。

例子
1、判斷String變數是否為空值
huanyu@ubuntu:~/shell$ [ -z $String ] huanyu@ubuntu:~/shell$ echo $?

返回 0 , 說明這個字串未定義

2、判斷當前系統語言的值
huanyu@ubuntu:~/shell$ [ $LANG != "en.US" ] && echo "Not en.US"
