11.3 循环控制
Tournez cent tours, tournez mille tours,
Tournez souvent et tournez toujours . . .
——保尔·魏尔伦,《木马》
本节介绍两个会影响循环行为的命令。
break, continue
break 和 continue 命令的作用和在其他编程语言中的作用一样。break 用来中止(跳出)循环,而 continue 则是略过未执行的循环部分,直接进行下一次循环。
样例 11-21. 循环中 break 与 continue 的作用
#!/bin/bash
LIMIT=19 # 循环上界
echo
echo "Printing Numbers 1 through 20 (but not 3 and 11)."
a=0
while [ $a -le "$LIMIT" ]
do
a=$(($a+1))
if [ "$a" -eq 3 ] || [ "$a" -eq 11 ] # 除了 3 和 11。
then
continue # 略过本次循环的剩余部分。
fi
echo -n "$a " # 当 a 等于 3 和 11 时,将不会执行这条语句。
done
# 思考:
# 为什么循环不会输出到20?
echo; echo
echo Printing Numbers 1 through 20, but something happens after 2.
##################################################################
# 用 'break' 代替了 'continue'。
a=0
while [ "$a" -le "$LIMIT" ]
do
a=$(($a+1))
if [ "$a" -gt 2 ]
then
break # 中止循环。
fi
echo -n "$a"
done
echo; echo; echo
exit 0break 命令接受一个参数。普通的 break 命令仅仅跳出其所在的那层循环,而 break N 命令则可以跳出其上 N 层的循环。
样例 11-22. 跳出多层循环
与 break 类似,continue 也接受一个参数。普通的 continue 命令仅仅影响其所在的那层循环,而 continue N 命令则可以影响其上 N 层的循环。
样例 11-23. continue 影响外层循环
样例 11-24. 真实环境中的 continue N
![]()
continue N结构不易理解并且可能在一些情况下有歧义,因此不建议使用。
Last updated
Was this helpful?