如何在bash中跳出嵌套循环?
尝试了continue
和break
,break
可以正常工作。但想要学习更多。
for i in 1 2 3; do
if [[ $flag -eq 1 ]]; then
break
fi
done
break
如何判断循环是否嵌套?可以使用i=4
或越界等方法退出循环吗?
如何在bash中跳出嵌套循环?
尝试了continue
和break
,break
可以正常工作。但想要学习更多。
for i in 1 2 3; do
if [[ $flag -eq 1 ]]; then
break
fi
done
break
如何判断循环是否嵌套?可以使用i=4
或越界等方法退出循环吗?
使用break
后跟一个数字,可以跳出该数字级别的嵌套循环。例如:
for i in 1 2 3 4 5; do
echo
echo i = $i
for j in 1 2 3 4 5; do
echo j = $j
if [ $j -eq 4 ]; then break; fi
if [ $j -eq 3 ] && [ $i -eq 4 ]; then break 2; fi
done
done
结果:
i = 1
j = 1
j = 2
j = 3
j = 4
i = 2
j = 1
j = 2
j = 3
j = 4
i = 3
j = 1
j = 2
j = 3
j = 4
i = 4
j = 1
j = 2
j = 3
if
语句不是循环,因此不计入其中,而且默认值为1。 - Joseph Sible-Reinstate Monicabreak --help
也应该说明相关信息。值得一提的是,break
将立即结束所有指定的循环深度。换句话说,指定的循环不会通过直到其块结束,但会立即停止执行。"break"的行为取决于Bash版本(例如,如果在其父shell中达到,则"break"将导致subshell
退出),更多信息应该在"Compatibility"详细文档中提供:http://tiswww.case.edu/php/chet/bash/COMPAT - Artfaith
if
语句时,Bash 已经注意到它是循环的一部分。这就是break
语句知道该做什么的原因。 - that other guy