步驟三:整數值比較
參與比較的必須是整數(可以呼叫變數),比較非整數值時會出錯:
[root@svr5 ~]# a=20.4
[root@svr5 ~]# [ $a -gt 10 ] //不支援小數比較
-bash: [: 20.4: integer expression expected
1)-eq 比較兩個數是否相等。
[root@svr5 ~]# x=20 //定義乙個測試變數
[root@svr5 ~]# [ $x -eq 20 ] && echo 「相等」 || echo 「不相等」
相等[root@svr5 ~]# [ $x -eq 30 ] && echo 「相等」 || echo 「不相等」
不相等2)-ne 比較兩個數是否不相等。
[root@svr5 ~]# [ $x -ne 20 ] && echo 「不等於」 || echo 「等於」
等於[root@svr5 ~]# [ $x -ne 30 ] && echo 「不等於」 || echo 「等於」
不等於3)-gt 比較前面的整數是否大於後面的整數。
[root@svr5 ~]# [ $x -gt 10 ] && echo 「大於」 || echo 「否」
大於[root@svr5 ~]# [ $x -gt 20 ] && echo 「大於」 || echo 「否」
否[root@svr5 ~]# [ $x -gt 30 ] && echo 「大於」 || echo 「否」
否4)-ge 比較前面的整數是否大於或等於後面的整數。
[root@svr5 ~]# [ $x -ge 10 ] && echo 「大於或等於」 || echo 「否」
大於或等於
[root@svr5 ~]# [ $x -ge 20 ] && echo 「大於或等於」 || echo 「否」
大於或等於
[root@svr5 ~]# [ $x -ge 30 ] && echo 「大於或等於」 || echo 「否」
否5)-lt 比較前面的整數是否小於後面的整數。
[root@svr5 ~]# [ $x -lt 10 ] && echo 「小於」 || echo 「否」
否[root@svr5 ~]# [ $x -lt 20 ] && echo 「小於」 || echo 「否」
否[root@svr5 ~]# [ $x -lt 30 ] && echo 「小於」 || echo 「否」
小於6)-le 比較前面的整數是否小於或等於後面的整數。
[root@svr5 ~]# [ $x -le 10 ] && echo 「小於或等於」 || echo 「否」
否[root@svr5 ~]# [ $x -le 20 ] && echo 「小於或等於」 || echo 「否」
小於或等於
[root@svr5 ~]# [ katex parse error: expected 'eof', got '&' at position 12: x -le 30 ] &̲& echo "小於或等於" …(who | wc -l) //賦值給變數n
[root@svr5 ~]# [ $n -gt 5 ] && 「超過了」 || echo 「沒超過」
沒超過上述賦值給變數n及與5比較的操作,可以簡化為如下形式:
[root@svr5 ~]# [ $(who | wc -l) -gt 5 ] && 「超過了」 || echo 「沒超過」
沒超過步驟四:字串匹配
1)== 比較兩個字串是否相同
檢查當前使用者是否為root。
當root使用者執行時:
[root@svr5 ~]# [ katex parse error: expected 'eof', got '&' at position 18: …er == "root" ] &̲& echo "yes" ||… [ katex parse error: expected 'eof', got '&' at position 18: …er == "root" ] &̲& echo "yes" ||… [ $user != 「root」 ] && echo 「禁止訪問」 || echo 「歡迎」
禁止訪問
當root使用者執行時:
[root@svr5 ~]# [ katex parse error: expected 'eof', got '&' at position 18: …er != "root" ] &̲& echo "禁止訪問" |…var1" ] && echo 「空值」 || echo 「非空值」
非空值[root@svr5 ~]# [ -z katex parse error: expected 'eof', got '&' at position 8: var2 ] &̲& echo "空值" || …var2" ] && echo 「空」 || echo 「非空」
非空 //空格視為有效字元,所以非空
[root@svr5 ~]# [ -z katex parse error: expected 'eof', got '&' at position 8: var3 ] &̲& echo "空值" || …var2" ] && echo 「不為空」 || echo 「為空」
不為空[root@svr5 ~]# [ -n 「$var3」 ] && echo 「不為空」 || echo 「為空」
為空步驟五:多個條件/操作的邏輯組合
1)&&,邏輯與
給定條件必須都成立,整個測試結果才為真。
檢查變數x的值是否大於10,且小於30:
[root@svr5 ~]# x=20 //設定x變數的值為20
[root@svr5 ~]# [ $x -gt 10 ] && [ $x -lt 30 ] && echo 「yes」
yes多個條件組合時,可以使用 [[ … ]] 界定,比如上述測試可以改為如下:
[root@svr5 ~]# [[ $x -gt 10 && $x -lt 30 ]] && echo 「yes」
yes2)||,邏輯或
只要其中乙個條件成立,則整個測試結果為真。
檢查變數x的值是否小於10或者小於30:
[root@svr5 ~]# [[ $x -lt 10 || $x -lt 30 ]] && echo 「yes」
yes只要/tmp/、/var/spool/目錄中有乙個可寫,則條件成立:
[root@svr5 ~]# [ -w 「/tmp/」 ] || [ -w 「/var/spool/」 ] && echo 「ok」
ok
Sell程式設計 條件測試操作
測試表達是否成立,若成立返回0,否則返回其他數值 格式1 test條件表示式 格式2 條件表示式 最少有乙個空格1.操作符 檔案或目錄 echo 檢視前一命令的返回值 2.常用的測試操作符 d 測試是否為目錄 e 測試目錄或檔案是否存在 f 測試是否為檔案 r 測試當前使用者是否有讀取許可權 w 測...
shell條件測試
shell條件測試通常都會用在for while until if等控制流結構中,用於判斷檔案的相關性質或變數的相互關係。條件測試用法 test 表示式 結果 成立返回0,不成立返回非0 檢視結果 echo 以下是幾類常用的測試表示式 1 檔案狀態測試 b filename 當filename 存在...
shell條件測試
shell條件測試 檔案狀態測試 b filename 當filename 存在並且是塊檔案時返回真 返回0 c filename 當filename 存在並且是字元檔案時返回真 d pathname 當pathname 存在並且是乙個目錄時返回真 e pathname 當由pathname 指定的...