Shell中條件判斷語法與判斷條件



一,簡介

Shell各類判斷結構和運算符的用法是shell編程的基礎,瞭解shell的判斷、運算符和一些退出狀態shell

對後面的學習有很重要的影響。shell有一個內部命令test常常用於對判斷語句express

進行測試一種或幾種狀態的條件是否成立編程


二. 判斷條件

(1)Linux的shell中的測試命令,用於測試某種條件或某幾種條件是否真實存在ide

測試命令是判斷語句和循環語句中條件測試的工具,對判斷和運算符的比較測試有很大的幫助。工具

(2)測試條件爲真,返回一個0值;      爲假,返回一個非0整數值學習

測試命令有兩種方式,一種test expression(表達式);另外一種命令格式[ expression ]測試

其中」[「是啓動測試命令,」]」要與之配對,並且」[「和」]」先後的空格必不可少spa

此方式常做爲流程控制語句的判斷條件

2.1 字符串判斷 
  
str1 = str2      當兩個串有相同內容、長度時爲真 
str1 != str2       當串str1和str2不等時爲真 
-n str1        當串的長度大於0時爲真(串非空) 
-z str1        當串的長度爲0時爲真(空串)
orm

這個地方有必要舉個小例子,咱們編程的時候常常作一些使用喜歡使用空格表示空xml

但shell中空格會被判斷成一個字符,好比:

[  -n  」 」 ]  這個值echo $?會返回0,說明字符串不爲空。
[  -z  」  」 ] 這個值echo $?會返回非空,說明裏邊不是空。
  
2.2 數字的判斷 
  
int1 -eq int2    兩數相等爲真 
int1 -ne int2    兩數不等爲真 
int1 -gt int2    int1大於int2爲真 
int1 -ge int2      int1大於等於int2爲真 
int1 -lt int2     int1小於int2爲真 
int1 -le int2       int1小於等於int2爲真 
  
2.3 文件的判斷 
  
-e file                                                    若文件存在,則爲真 
-d file                                                    若文件存在且是一個目錄,則爲真
-b file                                                    若文件存在且是一個塊特殊文件,則爲真
-c file            若文件存在且是一個字符特殊文件,則爲真
-f file            若文件存在且是一個規則文件,則爲真
-g file            若文件存在且設置了SGID位的值,則爲真
-h file            若文件存在且爲一個符合連接,則爲真
-k file            若文件存在且設置了「sticky」位的值
-p file            若文件存在且爲一已命名管道,則爲真
-r file            若文件存在且可讀,則爲真
-s file            若文件存在且其大小大於零,則爲真
-u file            若文件存在且設置了SUID位,則爲真
-w file            若文件存在且可寫,則爲真
-x file            若文件存在且可執行,則爲真
-o file            若文件存在且被有效用戶ID所擁有,則爲真 

  
2.4 邏輯判斷 
  
!expr                                                      若expr爲假則複合表達式爲真,expr能夠是任何有效的測試表達式
expr1 -a expr2         expr1和expr2都爲真則整式爲真
expr1 -o expr2         expr1和expr2有一個爲真則整式爲真  

  
補充: 系統變量 
  
$n                 該變量與腳本被激活時所帶的參數相對應

                  .n是正整數,與參數位置相對應($1,$2…) 
$?                                                                    前一個命令執行後的退出狀態
$#                 提供腳本的參數號

$*                 全部這些參數都被雙引號引住。若一個腳本接收兩個參數,$*等於$1$2 

$0                 正在被執行命令的名字。對於shell腳本而言,這是被激活命令的路徑
$@                 全部這些參數都分別被雙引號引住。若一個腳本接收到兩個參數,$@等價於$1$2
$$                 
當前shell的進程號。對於shell腳本,這是其正在執行時的進程ID
$!                 前一個後臺命令的進程號

三、退出狀態

(1)Linux系統,每當命令執行完成後,系統返回一個退出狀態。若退出狀態值爲0,表示命令運行成功;反之若退出狀態值不爲0,則表示命令運行失敗。最後一次執行命令的退出狀態值被保存在內置變量」$?」中。

(2)exit命令格式:exit status(status在0~255之間),返回該狀態值時伴隨腳本的退出,參數被保存在shell變量$?中。

3、總結

(1)shell的各類運算符是編程的重要環節。IF和CASE條件判斷結構的應用,使問題有了多分支的選擇。

(2)本文僅簡單的介紹重要的基礎知識,若要熟練使用,還須要大量的練習。

相關文章
相關標籤/搜索