linux shell 語言基礎(1)比較測試操作符
一、檢視linux 系統shell 支援
執行命令 cat /etc/shells
$ cat /etc/shells
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/zsh
二、常用的檔案測試操作符
-f 檔案 |
判斷檔案存在且為普通檔案為真,即測試表達式成立 |
-d 檔案(目錄) | 判斷檔案存在且為目錄檔案為真,即測試表達式成立 |
-s 檔案;大小 |
判斷檔案存在且為大小不為0則真,即測試表達式成立 |
-e 檔案; |
判斷檔案存在為真,即測試表達式成立,只要有檔案就行,要區別與“-f” |
-r 檔案 |
判斷檔案存在且可讀則真,即測試表達式成立 |
-w檔案 | 判斷檔案存在且可寫則真,即測試表達式成立 |
-x 檔案 | 判斷檔案存在且可執行則真,即測試表達式成立 |
-l 檔案 | 判斷檔案存在且為連結檔案則真,即測試表達式成 |
注意:這些操作符合對於[[]]、[]、test幾乎通用,更多man test
三、字串測試操作
-z "字串" | 若字串長度為0則真;[ -z "abc" ]&&echo 1||echo 0 |
-n "字串" | 若字串長度不為0則真 |
"字串1" = "字串2" |
兩個字串相等為真 |
"字串1" != "字串2" |
兩個字串不相等為真 |
注意 |
字串用雙引號包含;比較符兩端有空格 |
四、整數二元比較操作符
在[]及test比較 |
在(())和[[]]使用的比較符 | 說明 |
-eq | ==或= | equal的縮寫 相等 |
-ne | != | no equal 的縮寫 不相等 |
-gt | > | 大於 gerater than |
-ge | >= | 大於等於 gerater equla |
-lt |
< | 小於 less than |
-le | <= | 小於等於 less equal |
注意:常用 [ $num1 -eq $num2 ] 注意空格 (($num1>$num2)) 無需空格常規的數學比較
五、邏輯連線符
在[]及test |
在(())和[[]]使用的比 | 說明 |
-a | && | and 與,兩個為真則真 |
-o | || | or 或,兩個有一個為真則真 |
! | ! | not 非,相反為真 |
六、條件測試與比較
1、test 測試表達式 常用 test -f file && echo true||echo false
2、[ 測試表達式 ] 特別常用 [ -f file ]&& echo true||echo false
3、[[ 測試表達式 ]] [[ $a == "z*" ]] # 如果$a等於z*(字元匹配),那麼結果為true
[[ expr ]] 是bash中真正的條件判斷語句,其語法更符合程式設計習慣 (比如 &&, || 的用法)