退出、測試、判斷及操作符 shell

studywell發表於2015-12-29
轉自: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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章