歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> Linux操作系統實用教程:shell程序控制結構語句

Linux操作系統實用教程:shell程序控制結構語句

日期:2017/2/25 10:34:23   编辑:SHELL編程

  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

  }

  函數應先定義,後使用。調用函數時,直接利用函數名調用。

Copyright © Linux教程網 All Rights Reserved