shell语言中while循环的break与continue

times_tried=0
while [ $times_tried -le 50 ]
do
echo "times_tried=${times_tried}" >> /0
[ "$times_tried" == 25 ] && echo "试一试!" >> /0 && break
times_tried=$((times_tried+1))
done
echo "结束了!" >> /0

执行结果:

times_tried=25
试一试!
结束了!

到了times_tried=25就打断循环,执行之后的语句。如果要直接终止脚本,则使用exit。

times_tried=0
while [ $times_tried -le 50 ]
do
echo "times_tried=${times_tried}" >> /0
[ "$times_tried" == 25 ] && echo "继续!" >> /0 && continue
times_tried=$((times_tried+1))
done
echo "结束了!" >> /0

执行结果:

times_tried=25
继续!
times_tried=25
继续!
times_tried=25
继续!
times_tried=25
继续!

因为继续当前times_tried=25这个循环,continue后面的times_tried=$((times_tried+1)) 语句不会再执行,绝对没有结束那一天。

结论是:
break :退出循环体,继续执行循环体外后面的语句
exit :退出整个脚本进程
continue:“继续”循环当前循环次数continue之前的命令,后面的命令作废。因此不要将结束判断放在continue之后。
上面脚本可以改成:

times_tried=0
while [ $times_tried -le 50 ]
do
echo "times_tried=${times_tried}" >> /0
times_tried=$((times_tried+1))
[ "$times_tried" == 25 ] && echo "继续!" >> /0 && continue
done
echo "结束了!" >> /0

就不会出现问题了。

你可能感兴趣的:(linux,shell)