while循环
while循环能够重复执行一系列的命令,直到某种条件发生,先决条件是while后面的条件返回值,如果while后的命令执行成功,或条件真,则执行do和done之间的语句,执行完成后,再次判断while后的命令和条件;如果while后的命令执行失败,或条件为假,循环结束,与for循环的区别是,这种结构适合用在循环次数未知的情况下.
基本语法:
- while [condition]
- do
- command...
- done
- condition是一个条件测试命令,command是一个或多个命令的列表。
- 1.执行condition
- 2.如果condition的退出状态为非0,则退出循环
- 3.如果condition的退出状态为0,则执行command
- 4.当command结束时,回到第一步
如以下案例:
- [root@sandy ~]# cat4.sh
- #!/bin/bash
- i=0
- while [ $i -lt 10 ]
- do
echo$i - i=`expr$i + 1`
- done
- [root@sandy ~]# sh -x4.sh
- + i=0
- + '[' 0 -lt 10 ']'
- + echo 0
- 0
- ++ expr 0 + 1
- + i=1
- + '[' 1 -lt 10 ']'
- + echo 1
- 1
- ++ expr 1 + 1
通过以上的案例,那么就非常容易去理解嵌套循环了,而abs-guide对嵌套循环的定义如下:
嵌套循环就是在一个循环中还有一个循环,内部循环在外部循环体中.在外部循环的每次执行过程中都会触发
内部循环,直到内部循环执行结束.外部循环执行了多少次,内部循环就完成多少次.当然,不论是外部循环或
内部循环的break 语句都会打断处理过程.
下面来看一个比较经典的嵌套循环案例:
[root@sandy ~]# cat 6.sh
#!/bin/bash
x=0
while [ "$x" -lt 10 ];
do
y="$x"
while [ "$y" -ge 0 ];
do
echo -n "$y"
y=`expr $y - 1`
done
echo "$x"
x=`expr $x + 1`
done
执行结果如下:
00
101
2102
32103
432104
5432105
65432106
765432107
8765432108
98765432109
这些是比较基本的循环了,但万变不离其宗,个人认为理解脚本的执行过程是比较重要,那么sh -x就是一个
重要的调试命令了!