退出、測試、判斷及操作符 shell
轉自:http://blog.sina.com.cn/s/blog_6bd7d943010150h2.html
退出、測試、判斷及操作符 shell
提綱:退出狀態;
測試:整數比較運算子;字串運算子;檔案操作符;邏輯運算子
判斷:簡單if結構;if/else結構;if/elif/else結構;case結構
運算子:算術運算子;位運算子;自增自減運算子;數字常量
退出狀態:
在Linux系統中,每當命令執行完成後,系統都會返回一個退出狀態。該退出狀態用一整數值表示,用於判斷命令執行正確與否。
若退出狀態值為0,表示命令執行成功
若退出狀態值不為0時,則表示命令執行失敗
最後一次執行的命令的退出狀態值被儲存在內建變數“$?”中,所以可以通過echo語句進行測試命令是否執行成功
測試結構
測試命令可用於測試表示式的條件的真假。如果測試的條件為真,則返回一個 0值;如果測試的條件為假,將返回一個非 0整數值。
測試命令有兩種結構:
一種命令是使用test命令進行測試,格式為:
test
expression
其中條件expression是一個表示式,該表示式可由數字、字串、文字和檔案屬性的比較,同時可加入各種算術、字串、文字等運算子。
另一種命令格式:
[ expression
]
其中“[ ”是啟動測試的命令,但要求在expression後要有一個“
]”與其配對。使用該命令時要特別注意“[”後和“]”前的空格是必不可少的。
整數運算子
整數比較運算子是算術運算中很簡單的一種,用於兩個值的比較,測試其比較結果是否符合給定的條件。
例如:
a –eq b
如果滿足a等於b,則測試的結果為真(測試條件用0表示)
如果a不等於b,則測試結果為假(測試條件用非0表示)
測試時有兩種格式:
(1) test
"num1" numeric_operator "num2“
(2) [
"num1" numeric _operator "num2" ]
整數比較運算子
描述
num1 -eq num2
如果 num1等於num2,測試結果為0
num1 -ge num2
如果 num1大於或等於num2,測試結果為0
num1 -gt num2
如果 num1大於num2,測試結果為0
num1 -le num2
如果 num1小於或等於num2,測試結果為0
num1 -lt num2
如果 num1小於num2,測試結果為0
num1 -ne num2
如果 num1不等於num2,測試結果為0
字串運算子
字串運算子用於測試字串是否為空、兩個字串是否相等或者是否不相等
字串運算子 描述
string
測試字串string是否不為空
-n string 測試字串string是否不為空
-z string 測試字串string是否為空
string1 = string2 測試字串string1是否與字串string2相等
string1 != string2 測試字串string1是否與字串string2 不相等
檔案操作符
Linux Shell提供了大量的檔案操作符,這樣可以完成測試檔案的各種操作。比較常用的檔案操作符如下表所示:
檔案運算子 描述
-d file 測試file是否為目錄
-e file
測試file是否存在
-f file
測試file是否為普通文
-r file
測試file是否是程式可讀檔案
-s file
測試file的長度是否不為0
-w file
測試file是否是程式可寫檔案
-x file
測試file是否是程式可執行檔案
-L file
測試file是否符號化連結
邏輯運算子:
邏輯運算子主要包括邏輯非、邏輯與、邏輯或運算子:
邏輯操作符 描述
!expression
如果expression為假,則測試結果為真
expression1 –a expression2
如果expression1和expression同時為真,則測試結果為真
expression1 –o expression2
如果expression1和expression2中有一個為真,則測試條件為真
簡單if結構
簡單的if結構是:
if
expression
then
command
command
…
fi
在使用這種簡單if結構時,要特別注意測試條件後如果沒有“;”,則then語句要換行,否則會產生不必要的錯誤。如果if和then可以處於同一行,則必須用“;”
if/else結構
命令是雙向選擇語句,當使用者執行指令碼時如果不滿足if後的表示式也會執行else後的命令,所以有很好的互動性。其結構為:
if expression1
then
command
…
command
else
command
…
command
fi
if/elif/else結構
if/elif/else結構針對某一事件的多種情況進行處理。通常表現為“如果滿足某種條件,則進行某種處理,否則接著判斷另一個條件,直到找到滿足的條件,然後執行相應的處理”。其語法格式為:
if expression1
then
command
command
…
elif expression2
then
command
command
…
elif expressionN
then
command
…
command
else
command
…
command
fi
case結構
和if/elif/else結構一樣,case結構同樣可用於多分支選擇語句,常用來根據表示式的值選擇要執行的語句,該命令的一般格式為:
case Variable in
value1)
command
…
command;;
value2)
command
…
command;;
…
valueN)
command
…
command;;
*)
command
…
command;;
esac
算術運算子
在Linux
Shell中,算術運算子包括:+(加運算)、-(減運算)、*(乘運算)、/(除運算)、%(取餘運算)、**(冪運算),這些算術運算子的舉例及其結果如下表所示:
運算子
舉例
結果
+(加運算) 3+5
8
-(減運算) 5-3
2
*(乘運算) 5*3
15
/(除運算) 8/3
2
%(取餘運算) 15%4
3
**(冪運算) 5**3
125
位運算子
位運算子在Shell程式設計中很少使用,通常用於整數間的運算,位運算子是針對整數在記憶體中儲存的二進位制資料流中的位進行的操作。
運算子
舉例
解釋和value值
<<(左移)
value=4<<2
4左移2位,value值為16
>>(右移)
value=8>>2
8右移2位,value值為2
&(按位與)
value=8&4
8按位與4,value值為0
|(按位或)
value=8|4
8按位或4,value值為12
~(按位非)
value=~8
按位非8,value值為-9
^(按位異或)
value=10^3
10按位異或3,value值為9
自增自減運算子:
自增自減操作符主要包括前置自增(++variable)
、前置自減(--variable)、後置自增(variable++)和後置自減(variable--)。
前置操作首先改變變數的值(++用於給變數加1,--用於給變數減1),然後在將改變的變數值交給表示式使用
後置變數則是在表示式使用後再改變變數的值
要特別注意自增自減操作符的操作元只能是變數,不能是常數或表示式,且該變數值必須為整數型,例如:++1、(num+2)++都是不合法的
數字常量
Linux
Shell指令碼或命令預設將數字以十進位制的方式進行處理,如果要使用其他進位制的方式進行處理,則需對這個數字進行特定的標記或加字首。
當使用0作為字首時表示八進位制
當使用0x進行標記時表示十六進位制
同時還可使演示用num#這種形式進行標記進位制數
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-1967022/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 02 . Shell變數和邏輯判斷及迴圈使用變數
- Shell 條件判斷總結
- 自動化測試中如何判斷測試是否通過?詳解 Pytest 測試框架的斷言用法框架
- 精準測試:如何判斷兩次測試中哪次的質量更好?
- 軟體測試--詳細判斷電話號碼
- shell程式設計(五)條件判斷程式設計
- Swift,迴圈及判斷Swift
- 自動化介面測試,怎樣判斷 Bug 是否存在
- mysql測試shellMySql
- shell 判斷檔案或路徑是否存在
- JavaScript之坑了我--instanceof的判斷機制測試JavaScript
- shell程式設計中的控制判斷語句程式設計
- Linux Shell 判斷環境變數 是否存在Linux變數
- SHELL指令碼每月最後一天判斷指令碼
- shell判斷系統路徑中是否存在空格
- js資料型別及判斷JS資料型別
- shell指令碼中的運算子和條件判斷指令碼
- shell生成測試資料
- 假如你是一位測試主管,如何判斷一名測試工程師是否優秀?工程師
- 實現system函式功能(shell命令執行情況判斷)函式
- mongo shell中特殊判斷符號轉義的問題Go符號
- Linux Shell程式設計(11)——退出和退出狀態Linux程式設計
- shell請求api,獲取json返回值,做判斷APIJSON
- 怎麼判斷dns汙染,怎麼判斷dns汙染,具體判斷方法DNS
- Laravel-Echo 線上離線檢測判斷Laravel
- JS的判斷語句:判斷、迴圈JS
- 伺服器系統探測及識別、容器判斷是怎麼做的?伺服器
- 字元判斷字元
- 測試管理及測試工具盒集
- 《shell條件測試語句,字串測試apache是否開啟》字串Apache
- iOS版本更新比較及廣告頁展示判斷iOS
- Oracle 中文字元及中文亂碼判斷Oracle字元
- 03_SHELL程式設計之條件判斷和流程控制程式設計
- 『忘了再學』Shell流程控制 — 34、if條件判斷語句(二)
- 『忘了再學』Shell流程控制 — 33、if條件判斷語句(一)
- shell判斷檔案,目錄是否存在或者具有許可權【轉】
- js函式中的if判斷和a==b判斷JS函式
- 使用帶型別判斷的比較判斷型別