Linux论坛's Archiver

《开源》旗舰电子杂志2008年11期发布,火热下载中!

jackywdx 发表于 2008-7-29 09:02

对break,continue带参数时的疑问

在《高级Bash 脚本编程指南》看到的,
break 命令可以带一个参数.一个不带参数的break 循环只能退出最内层的循环,而break N
可以退出N 层循环.
continue 命令也可以带一个参数.一个不带参数的continue 命令只去掉本次循环的剩余代码
.而continue N 将会把N 层循环剩余的代码都去掉,但是循环的次数不变.
对break带参数时还比较好理解,但对continue理解不透~希望高人指点
下面是continue带参数的例子
1 #!/bin/bash
2 # "continue N" 命令, 将让N 层的循环全部被continue.
3
4 for outer in I II III IV V # 外部循环
5 do
6 echo; echo -n "Group $outer: "
7
8 # --------------------------------------------------------------------
9 for inner in 1 2 3 4 5 6 7 8 9 10 # 内部循环
10 do
11
12 if [ "$inner" -eq 7 ]
13 then
14 continue 2 # continue 2 层, 也就是到outer 循环上.
15 # 将"continue 2"替换为一个单独的"continue"
16 # 来看一下一个正常循环的行为.
17 fi
18
19 echo -n "$inner " # 7 8 9 10 将不会被echo
20 done
21 # --------------------------------------------------------------------

Flyinmorning 发表于 2008-7-29 20:17

好贴,建议加精阿

liyropt 发表于 2008-7-29 21:12

回复 1楼 jackywdx 的帖子

直接 continue 时, 不执行本次循环中continue后的语句,开始下次循环。

当continue N时,不执行本次(相对于跳到的那层)N层循环中continue后的语句,开始下次循环。

可以再加一层循环,continue 3试试结果。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.