1. 程式人生 > >linux shell 語言基礎(1)比較測試操作符

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中真正的條件判斷語句,其語法更符合程式設計習慣 (比如 &&, || 的用法)