條件測試操作命令二

2021-09-24 09:39:42 字數 3197 閱讀 6579

步驟三:整數值比較

參與比較的必須是整數(可以呼叫變數),比較非整數值時會出錯:

[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 指定的...