LinuxShell之while循环语句
⼀、while 命令
  while命令某种意义上是if-then语句和for循环的混杂体。while命令允许定义⼀个要测试的命令,然后循环执⾏⼀组命令,只要定义的测试命令返回的是退出状态码0。它会在每次迭代的⼀开始测试test命令。在test命令返回⾮零退出状态码时,while命令会停⽌执⾏那组命令。
1.1、while 的基本格式
  while命令的格式是:
1while test command
2do
3    other commands
4done
  while命令中定义的test command和if-then语句(参见第12章)中的格式⼀模⼀样。可以使⽤任何普通
的bash shell命令,或者⽤test命令进⾏条件测试,⽐如测试变量值。
  while命令的关键在于所指定的test command的退出状态码必须随着循环中运⾏的命令⽽改变。如果退出状态码不发⽣变化, while循环就将⼀直不停地进⾏下去。
  最常见的test command的⽤法是⽤⽅括号来检查循环命令中⽤到的shell变量的值。
1 $ cat test10
2 #!/bin/bash
3 # while command test
4 var1=10
5while [ $var1 -gt 0 ]
6do
7echo $var1
8 var1=$[ $var1 - 1 ]
9done
10 $ ./test10
1110
129
138
147
156
165
174
183
192
201
21 $
  while命令定义了每次迭代时检查的测试条件:
1while [ $var1 -gt 0 ]
  只要测试条件成⽴,while命令就会不停地循环执⾏定义好的命令。在这些命令中,测试条件中⽤到的变量必须修改,否则就会陷⼊⽆限循环。在本例中,我们⽤shell算术来将变量值减⼀:
1 var1=$[ $var1 - 1 ]
  while循环会在测试条件不再成⽴时停⽌。
1.2、使⽤多个测试命令
  while命令允许你在while语句⾏定义多个测试命令。只有最后⼀个测试命令的退出状态码会被⽤来决定什么时候结束循环。如果你不够⼩⼼,可能会导致⼀些有意思的结果。下⾯的例⼦将说明这⼀点。
1 $ cat test11
2 #!/bin/bash
3 # testing a multicommand while loop
4 var1=10
5while echo $var1
6 [ $var1 -ge 0 ]
7do
8echo"This is inside the loop"
9 var1=$[ $var1 - 1 ]
10done
11 $ ./test11
1210
13 This is inside the loopwhile语句简单例子
149
15 This is inside the loop
168
17 This is inside the loop
187
19 This is inside the loop
206
21 This is inside the loop
225
23 This is inside the loop
244
25 This is inside the loop
263
27 This is inside the loop
282
29 This is inside the loop
301
31 This is inside the loop
320
33 This is inside the loop
34 -1
35 $
  请仔细观察本例中做了什么。while语句中定义了两个测试命令。
1while echo $var1
2    [ $var1 -ge 0 ]
  第⼀个测试简单地显⽰了var1变量的当前值。第⼆个测试⽤⽅括号来判断var1变量的值。在循环内部,echo语句会显⽰⼀条简单的消息,说明循环被执⾏了。注意当你运⾏本例时输出是如何结束的。
1 This is inside the loop
2 -1
3 $
  while循环会在var1变量等于0时执⾏echo语句,然后将var1变量的值减⼀。接下来再次执⾏测试命令,⽤于下⼀次迭代。echo测试命令被执⾏并显⽰了var变量的值(现在⼩于0了)。直到shell执⾏test测试命令,whle循环才会停⽌。
  这说明在含有多个命令的while语句中,在每次迭代中所有的测试命令都会被执⾏,包括测试命令失败的最后⼀次迭代。要留⼼这种⽤法。另⼀处要留意的是该如何指定多个测试命令。注意,每个测试命令都出现在单独的⼀⾏上。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。