文档介绍:shell编程-shell编程-循环语句(1)
 shell编程之循环语句(1)
目标:
完成这一章,你将能够作以下事情:
使用while语句在条件为真的时候重复地执行一段代码。
使用until语句重复执行一段代码直到条件为真。
使用交互性的for语句进行循环控制。
目标: 重复的执行一段命令列表。
控制; 基于一个关键命令的返回值。
三种格式: while ... do ... done
until ... do ... done
for ... do ... done
循环语句让你可以重复执行一个命令列表,而决定是继续循环还是跳出循环是基于一个命令的返回值。test命令常常被用来控制一个循环是否继续。
与分支语句不同的是,在分支语句中开始一个分支语句的关键字和结束一个分支语句的关键字是相反的(if/fi 和case/esac),循环语句由一个关键字和一些条件开始,循环体整个用do/done来包围起来。
语法:
let expression or (( expression ))
例子:
$ x=10$ x=12
$ y=2$ let "x <10"
$ let x=x+2 $ echo $?
$ echo $x 1
12$ (( x > 10 ))
$ let "x = x / (y+1)" $ echo $?
$ echo $x $ 0
4$ if ((x > 10 ))
$ (( x = x + 1 ))> then echo x greater
$ echo $x> else echo x not greater
5 fi
x greater
循环语句通常使用一个增长的数字变量来进行控制。使用let命令,可以在shell脚本中使用算术表达式。这个命令允许使用长的整数运算。在上例中,expression代表一个shell变量的算术表达式和能够被shell识别的操作符,而(())可以替let命令。shell能够识别的表达式如下所示:
操作符描述
-减去
!逻辑相反
* / %乘,除,余数
+ - 加,减
<= >= <>关系比较
== !=等于不等于
=赋值
括号能够被用作改变表达式中计算的顺序,就像在
let "x=x/(y+1)"
中一样
注意双引号被用来忽略括号的特殊含义。同样如果你希望使用空格来分隔操作符和操作符的时候,就必须使用双引号,或者(( ))语句:
let " x = x + (y / 2)" 或者(( x= x+ (y / 2) ))
当使用逻辑和关系操作符,(!,<=,>=,<,>,++,~=),的时候,shell会返回一个代码变量,?会反映结果是真还是假,再一次说明,必须使用双引号来防止shell将大于和小于运算符当作I/