华南俳烁实业有限公司

考試首頁(yè) | 考試用書 | 培訓(xùn)課程 | 模擬考場(chǎng) | 考試論壇  
  當(dāng)前位置:操作系統(tǒng) > Linux > 文章內(nèi)容
  

Linux操作系統(tǒng)實(shí)用教程:shell程序控制結(jié)構(gòu)語句

 [ 2016年1月9日 ] 【

  shell程序控制結(jié)構(gòu)語句

  腳本的控制結(jié)構(gòu)語句有三種基本的類型:兩路分支、多路分支以及一個(gè)或多個(gè)命令的循環(huán)執(zhí)行。Linux的bash中的兩路分支語句是if語句,多路分支語句是if-elif和case語句;代碼的循環(huán)執(zhí)行語句是for、while和until語句。

  if語句

  兩路分支的if語句 格式:

  if 判斷條件

  then 命令1

  else 命令2

  Fi

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

  命令語句形式的判斷條件

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

  格式為:

  if 判斷條件1

  then 命令1

  elif 判斷條件2

  then 命令2

  ……

  else 命令n

  Fi

  其中elif是else if的縮寫

  測(cè)試語句

  有兩種格式,一種是使用關(guān)鍵字test,而另一種是使用方括號(hào)。格式如下:

  test expression

  [ expression ]

  二者是等效的。同時(shí)要注意幾點(diǎn)

  用于三種形式的測(cè)試:文件測(cè)試、字符串測(cè)試和數(shù)值測(cè)試

  文件測(cè)試

  字符串測(cè)試

  數(shù)值測(cè)試

  用邏輯操作符進(jìn)行組合的測(cè)試語句

  用邏輯操作符進(jìn)行組合的測(cè)試語句實(shí)例

  [ ! "$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語句

  對(duì)同一變量進(jìn)行多次的測(cè)試,比elif語句更簡(jiǎn)單、簡(jiǎn)潔

  case string1 in

  str1)

  commands-list1;;

  str2)

  commands-list2;;

  ...

  strn)

  commands-listn;;

  esac

  使用case語句時(shí)應(yīng)注意以下幾點(diǎn)

  (1) 每個(gè)正則表達(dá)式后面可有一條或多條命令,其最后一條命令必須以兩個(gè)分號(hào)(;;)結(jié)束。

  (2) 正則表達(dá)式中可以使用通配符。

  (3) 如果一個(gè)正則表達(dá)式是由多個(gè)模式組成,那么各模式之間應(yīng)以豎線“|”隔開。表示各模式是“或”關(guān)系,即只要給定字符串與其中一個(gè)模式相配,就會(huì)執(zhí)行其后的命令表。

  使用case語句時(shí)應(yīng)注意以下幾點(diǎn)

  (4) 各正則表達(dá)式是唯一的,不應(yīng)重復(fù)出現(xiàn)。

  (5) case語句以關(guān)鍵字case開頭,以關(guān)鍵字esac結(jié)束。

  (6) case的退出(返回)值是整個(gè)結(jié)構(gòu)中最后執(zhí)行的那個(gè)命令的退出值。若沒有執(zhí)行任何命令,則退出值為零。

  for語句

  格式:

  for variable [in argument-list]

  do

  command-list

  Done

  其中的[in argument-list]部分為可選項(xiàng),由于它的不同又可有三種形式。

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

  [argument-list]為變量值表

  變量variable依次取值表中各字符串

  [argument-list]為文件的表達(dá)式

  變量的值依次取當(dāng)前目錄(或指定目錄)下與文件表達(dá)式相匹配的文件名,每取值一次,就進(jìn)入循環(huán)體執(zhí)行命令表,直到所有匹配的文件名取完為止。

  [argument-list]為空

  [argument-list]也可以用$*來代替,變量依次取位置參數(shù)的值,然后執(zhí)行循環(huán)體中的命令表,直至所有位置參數(shù)取完為止。

  while語句

  格式為:

  while expression

  do

  command-list

  Done

  作用:只要expression的值為真,則進(jìn)入循環(huán)體,執(zhí)行command-1ist中的命令,然后再做條件測(cè)試,直到測(cè)試條件為假時(shí)才終止while語句的行。

  until語句

  格式為:

  until expression

  do

  command-list

  done

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

  break和continue語句

  break命令可以從循環(huán)體中退出來。格式為:

  break [n]

  continue命令跳過循環(huán)體中在它之后的語句,回到本層循環(huán)的開頭,進(jìn)行下一次循環(huán)。格式為:

  continue [n]

  算術(shù)表達(dá)式

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

  expr n1運(yùn)算符n2

  例:

  [expr 15 \* 15

  注意:在運(yùn)算符的前后都留有空格,否則expr不對(duì)表達(dá)式進(jìn)行計(jì)算,而直接輸出它們。

  自定義函數(shù)

  在shell腳本中可以定義并使用函數(shù)。其定義格式為:

  Function( )

  {

  command-list

  }

  函數(shù)應(yīng)先定義,后使用。調(diào)用函數(shù)時(shí),直接利用函數(shù)名調(diào)用。

本文糾錯(cuò)】【告訴好友】【打印此文】【返回頂部
將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動(dòng)訪問考試網(wǎng) | 復(fù)制本頁(yè)地址,傳給QQ/MSN上的好友 | 申請(qǐng)鏈接 | 意見留言 TOP
關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  站內(nèi)導(dǎo)航  考試論壇
Copyright © 2007-2013 中華考試網(wǎng)(Examw.com) All Rights Reserved
博野县| 惠来县| 山阴县| 淅川县| 北流市| 江北区| 蓬莱市| 黑山县| 洛扎县| 上蔡县| 海安县| 通道| 金平| 大冶市| 交口县| 渭南市| 东阳市| 湄潭县| 任丘市| 红河县| 泾源县| 松江区| 法库县| 德保县| 渑池县| 马鞍山市| 洛扎县| 芒康县| 永城市| 靖安县| 福州市| 佳木斯市| 临猗县| 柯坪县| 灵川县| 明溪县| 合水县| 双城市| 安徽省| 溆浦县| 读书|