中华考试网·阅读新闻
操作系统 > Linux > 文章内容

Linux操作系统实用教程:shell程序控制结构语句

2016-1-9编辑:guomu

  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

  }

  函数应先定义,后使用。调用函数时,直接利用函数名调用。

Linux操作系统实用教程:shell编程中的输入输出命令
咨询热线:4000-525-585(免长途费)