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變量$?中。
(1)shell的各類運算符是編程的重要環節。IF和CASE條件判斷結構的應用,使問題有了多分支的選擇。
(2)本文僅簡單的介紹重要的基礎知識,若要熟練使用,還須要大量的練習。