3.5 while、until命令
while命令允许定义要测试的命令,然后只要定义的测试命令返回0退出状态代码。它在每次迭代开始时检查测试命令。测试命令返回非零退出状态代码时,while命令停止执行命令集。
3.5.1 使用多条测试命令
while命令的格式是:
在while命令中定义的test命令与在if-then语句中定义的格式一样。while命令的关键是指定的test命令的退出状态必须根据循环中命令的运行情况改变。如果退出状态不改变,while循环就会陷入无限的循环中。只要测试条件为true,while命令会继续循环定义的命令。在这些命令中,用于检测条件的变量一定要改变,否则就会无穷循环。
while命令允许在while语句定义多条test命令。只有最后一条测试命令的退出状态是用来决定循环是何时停止的。在多命令while语句中,所有的测试命令在每次迭代中都执行,包含测试命令失败的最后一次迭代。
第一条测试命令简单的显示了变了$result的当前值。第二条命令使用测试命令决定变了$test的值。当变量$test的值等于零时,while循环执行echo语句。接下来,用于下一次迭代的测试条件被执行。执行echo测试命令,显示变量test的值,它现在小于零。直到shell执行test测试命令,while循环才终止。这表明,在多命令while语句中,所有的测试命令在每次迭代中执行,包含测试命令失败的最后一次迭代。
1
2
3
4
5
6
7
8
9
10
11#!/bin/bash #while命令测试实例 test=10 result=1 while echo $result [ $test -gt 0 ] do result=$[ $result*$test ] test=$[ $test-1 ] done echo "10的阶乘"$result

3.5.2until命令与循环嵌套
until命令刚好与while命令相反。until命令需要制定一条测试命令,这条命令通常产生一个非0的退出状态。只要测试命令的退出状态非0,bash shell就会执行列在循环当中的命令。一旦测试条件返回0退出状态,循环停止。until命令格式如下:
与while命令相似,可以在until命令语句中使用多条测试命令。只有最后一条命令的退出状态能够决定bash shell是否执行其他定义的命令。
1
2
3
4
5
6
7
8
9
10
11#!/bin/bash #until命令测试实例如下 var=10 result=1 until echo $var,$result [ $var -le 0 ] do result=$[ $result*$var ] var=$[ $var -1 ] done echo "10的阶乘"$result

一条循环语句可以在循环中使用任何类型的命令,包括其他循环命令。这种称为嵌套循环。使用嵌套循环时要谨慎,因为是在一个迭代内部执行另一个迭代,它增加了正在运行的命令的运行次数。
嵌套循环(也称为内循环)对每次外部循环迭代都迭代所有的值。注意,两个循环的do命令和done命令之间没区别。嵌套循环实例:
1
2
3
4
5
6
7
8
9
10
11
12#!/bin/bash #for嵌套for循环 #9*9乘法口诀 for(( i=1 ;i<=9;i++ )) do for(( j=1;j<=9;j++ )) do #当$j小于等于$i,在屏幕上打印乘法表 [ $j -le $i ] && echo -n "$i*$j=$[ $i * $j ] " done echo '' done

最后
以上就是淡淡西装最近收集整理的关于第3章 shell结构化命令------------(while、until循环,九九乘法表)的全部内容,更多相关第3章内容请搜索靠谱客的其他文章。
发表评论 取消回复