天天看點

shell條件判斷式語句

條件判斷式格式,有兩種形式,

1. test 條件表達式(利用test指令來判斷條件表達式)

2. [ 條件表達式 ] (将判斷表達式用中括号括起來,注意條件表達式兩邊的空格不能省略)

這兩種形式都能完成條件判斷的功能,友善起見,我們一般使用中括号來對條件表達式進行判斷。

能判斷的種類有:

1. 檔案類型: [ 選項 檔案名 ]

選項有:

-e:檔案存在(exist),傳回真

-d:檔案存在且為目錄檔案(directory),傳回真

-f:檔案存在且為普通檔案(regular file),傳回真

-b:檔案存在且為塊裝置檔案(block),傳回真

-c:檔案存在且為字元裝置檔案(char),傳回真

-L:檔案存在且為符号連結檔案(symbolic link),傳回真

-P:檔案存在且為指令管道檔案(named pipe),傳回真

-s:檔案存在且為内容為非空檔案(這個參數很特殊,英文沒發對應),傳回真

-S:檔案存在且為套接字檔案(Socket),傳回真

2. 檔案權限:[ 選項 檔案名 ]

選項有:

-r:檔案存在且權限為隻讀,傳回真

-w:檔案存在且權限為隻寫,傳回真

-x:檔案存在且為可執行檔案,傳回真

-u:檔案存在且有SUID權限,傳回真

-g:檔案存在且有SGID權限,傳回真

-k:檔案存在且有SBIT權限(sticky bit),傳回真。SBIT(防删除)權限與隻讀權限(沒有寫權限)不同,防删除權限不允許使用者删除檔案但允許使用者添加檔案,而隻讀權限(沒有寫權限)不僅不允許使用者删除檔案,也不允許使用者添加檔案。

3. 檔案之間進行比較:[ 檔案1 選項 檔案2 ]

選項有:

-nt:(newer than),檔案1存在且檔案1比檔案2新(修改時間),傳回真

-ot:(older than),檔案1存在且檔案1比檔案2老(修改時間),傳回真

-ef:檔案1和檔案2存在且擁有相同的inode号,傳回真

4. 整數之間進行比較:[ 整數1 選項 整數2 ]

選項有:

-eq:(equal),整數1與整數2相等,傳回真

-ne:(not equal),整數1與整數2不相等,傳回真

-gt:(greater than),整數1比整數2大,傳回真

-lt:(less than),整數1比整數2小,傳回真

-ge:(greater than or equal),整數1大于或等于整數2,傳回真

-le:(less than or equal),整數1小于或等于整數2,傳回真

因為選項已經是數值比較,是以系統會自動将數字字元串轉化為數值進行比較。

5. 字元串之間比較:[ 字元串1 選項 字元串2 ]

選項有:

-z:(zero),如果字元串長度為零,傳回真

-n:(nonzero),如果字元串長度非零, 傳回真

!=:字元串1與字元串2不相等,傳回真

=:字元串1與字元串2相等,傳回真(雙等于号==有同樣的判斷效果)

<:根據字典序,字元串1小于字元串2,傳回真

>:根據字典序,字元串1大于字元串2,傳回真

6. 多重條件判斷(邏輯運算): [ 表達式1 邏輯選項 表達式2 ]

邏輯選項有:

-a:表示邏輯且

-o:表示邏輯或

!:表示邏輯非

若有不對之處,敬請指正。