在:
1 0
1 5
输出是:
1 0
1 5
3 0
3 5
然后脚本停止。
如果删除break命令的参数(2),输出为:
3 0
我要问的是,为什么3 5
和2 0
被打印出来,当脚本不受破坏时?脚本没有打印2 5
和3 0
,而3 5
和settings.py
也应该表示中断......
答案 0 :(得分:1)
break
的可选参数告诉它要突破哪个循环。如果省略该参数,则会突破最内层循环。使用参数n
,它会突破n
封闭循环。
所以break 2
突破for var1
循环,因为它是第二个封闭循环。如果您将其更改为break
,则它会突破for var2
循环,因此会转到for var1
的下一次迭代。
答案 1 :(得分:1)
总结评论,有两个问题:
3 0
之后打印break
,而不是在break 2
之后打印? 这是因为条件([ $var1 -eq 2 -a $var2 -eq 0 ]
)检查了相等而不是-ge
,大于或等于。使用-ge
时,两个数字都不会更高echo
。
break 2
改为退出两个循环,从而在这种特定情况下产生相同的效果。如果循环为for var1 in 1 2 0
,则break 2
也会阻止0 0
显示,因为两个循环都已停止。
2 5
后才会打印brake
?这是因为整个内循环在break
上停止,因此没有其他迭代有机会echo
。要改为跳过当前迭代并立即尝试下一个迭代,请使用continue
。
答案 2 :(得分:0)
只是一个简单的break
突破了一个循环 - 在你的情况下内部for循环。
但是,如果在break语句中使用了一个额外的整数,就像在break 2
中一样,那么就会超出指定数量的循环 - 在你的情况下,循环两个。由于只有两个嵌套循环,并且在最外层循环之后没有更多代码,因此它实际上与结束脚本相同。