當前位置:才華齋>IT認證>Linux認證>

2016年Linux認證考試要點:shell程式控制結構語句

Linux認證 閱讀(3.25W)

shell程式控制結構語句

2016年Linux認證考試要點:shell程式控制結構語句

指令碼的控制結構語句有三種基本的型別:兩路分支、多路分支以及一個或多個命令的迴圈執行。Linux的bash中的兩路分支語句是if語句,多路分支語句是if-elif和case語句;程式碼的迴圈執行語句是for、while和until語句。

if語句

兩路分支的'if語句 格式

if 判斷條件

then 命令1

else 命令2

  Fi

判斷條件包括命令語句和測試語句兩種方式:

命令語句形式的判斷條件

多路條件判斷分支的if語句

格式為:

if 判斷條件1

then 命令1

elif 判斷條件2

then 命令2

……

else 命令n

Fi

其中elif是else if的縮寫

測試語句

有兩種格式,一種是使用關鍵字test,而另一種是使用方括號。格式如下:

test expression

[ expression ]

二者是等效的。同時要注意幾點

用於三種形式的測試:檔案測試、字串測試和數值測試

檔案測試

字串測試

數值測試

用邏輯操作符進行組合的測試語句

用邏輯操作符進行組合的測試語句例項

[ ! "$s1" -le 0 ]

! test "$s1" -le 0

[ -f "$s1" –a –w "$s1" ]

test –f "$s1" -a –w "$s1"

[ "$s1" –gt 0 –o "$s2" –lt 10 ]

test "$s1" –gt 0 –o "$s2" –lt 10

[ ( "$a" –gt 0 –a "$a" –lt 10 ) –a "$a" –ne 5 ]

test ( "$a" –gt 0 –a "$a" –lt 10 ) –a "$a" –ne 5

case語句

對同一變數進行多次的測試,比elif語句更簡單、簡潔

case string1 in

str1)

commands-list1;;

str2)

commands-list2;;

...

strn)

commands-listn;;

esac

使用case語句時應注意以下幾點

(1) 每個正則表示式後面可有一條或多條命令,其最後一條命令必須以兩個分號(;;)結束。

(2) 正則表示式中可以使用萬用字元。

(3) 如果一個正則表示式是由多個模式組成,那麼各模式之間應以豎線“|”隔開。表示各模式是“或”關係,即只要給定字串與其中一個模式相配,就會執行其後的命令表。

使用case語句時應注意以下幾點

(4) 各正則表示式是唯一的,不應重複出現。

(5) case語句以關鍵字case開頭,以關鍵字esac結束。

(6) case的退出(返回)值是整個結構中最後執行的那個命令的退出值。若沒有執行任何命令,則退出值為零。

for語句

格式:

for variable [in argument-list]

do

command-list

Done

其中的[in argument-list]部分為可選項,由於它的不同又可有三種形式。

[in argument-list]部分三種形式

[argument-list]為變數值表

變數variable依次取值表中各字串

[argument-list]為檔案的表示式

變數的值依次取當前目錄(或指定目錄)下與檔案表示式相匹配的檔名,每取值一次,就進入迴圈體執行命令表,直到所有匹配的檔名取完為止。

[argument-list]為空

[argument-list]也可以用$*來代替,變數依次取位置引數的值,然後執行迴圈體中的命令表,直至所有位置引數取完為止。

while語句

格式為:

while expression

do

command-list

Done

作用:只要expression的值為真,則進入迴圈體,執行command-1ist中的命令,然後再做條件測試,直到測試條件為假時才終止while語句的行。

until語句

格式為:

until expression

do

command-list

done

作用: 只要expression的值為假,就執行command—lists的命令。

break和continue語句

break命令可以從迴圈體中退出來。格式為:

break [n]

continue命令跳過迴圈體中在它之後的語句,回到本層迴圈的開頭,進行下一次迴圈。格式為:

continue [n]

算術表示式

五種基本的算術運算:+(加)、-(減)、*(乘)、/(除)和%(取模)。shell只提供整數的運算。格式如下:

expr n1運算子n2

例:

[expr 15 * 15

注意:在運算子的前後都留有空格,否則expr不對錶達式進行計算,而直接輸出它們。

自定義函式

在shell指令碼中可以定義並使用函式。其定義格式為:

Function( )

{

command-list

}

函式應先定義,後使用。呼叫函式時,直接利用函式名呼叫。