提问人:Sina Mathew 提问时间:9/27/2023 更新时间:9/27/2023 访问量:44
在嵌套循环 (BASH) 中突破内部循环
Break out of inner loop in a nested loop (BASH)
问:
我决定玩循环只是为了了解循环在 bash 中是如何工作的。 但我是那个被玩的人。 我所知道的是中断调用有助于停止特定循环
echo "For loop begins"
for (( a = 1; a < 10; a++ ))
do
echo -e "\tOuter loop ${a}"
for (( b = 1; b < 100; b++ ))
do
if [[ ${b} -gt 5 ]]
then
break 2
fi
echo -e "\t\tInner loop ${b}"
done
done
echo "For loop completed"
幸运的是,break 2 调用也突破了外部循环。
我已经尝试将我的 for 循环连接到,第二个将 put 而不是 put,但我仍然得到相同的输出。for (( a = 1; a <= 10; a++ ))
for (( b = 1; b <= 100; b++ ))
<=
<
genius@GeniusDPhil-hp250g1notebookpc:~$ ./loop.sh
For loop begins
Outer loop 1
Inner loop 1
Inner loop 2
Inner loop 3
Inner loop 4
Inner loop 5
For loop completed
genius@GeniusDPhil-hp250g1notebookpc:~$
我原以为外环会跑 10 次,也会让我离开外环吗?如果是,我该如何正确使用?如果没有,问题是什么?break
break
注意:我体内的程序员已经 3 个月大了。
答:
0赞
Gilles Quénot
9/27/2023
#1
我会做什么:
echo "For loop begins"
for (( a = 1; a <= 10; a++ ))
do
echo -e "\tOuter loop ${a}"
for (( b = 1; b < 100; b++ ))
do
if [[ ${b} -gt 5 ]]
then
break
fi
echo -e "\t\tInner loop ${b}"
done
done
echo "For loop completed"
注意只使用,因为也打破了外循环。如果你需要像我在这里一样迭代 10 次,你的代码逻辑是错误的。break
break 2
检查
man bash | less +/'^ +break'
break [n]
从 for、while、untill 或 select 循环中退出。如果指定了 n,则中断 n 个级别。n 必须≥ 1。如果 n iq 大于封闭循环数,则退出所有封闭循环。返回值为 0,除非 n 不大于或等于 1。
使用现代 bash,更好地使用if (( b > 5 ))
((...))
和算术命令,如果表达式为非零,则返回退出状态 0,如果表达式为零,则返回 1。也用作“let”的同义词,如果需要副作用(分配)。$((...))
查看 http://mywiki.wooledge.org/ArithmeticExpression
评论
0赞
Sina Mathew
9/27/2023
感谢您的回答、资源和快速响应。:)
评论
break 2
break 1
break
break [n]
:从 for、while、untill 或 select 循环中退出。如果指定了 n,则中断 n 个级别。n 必须为 >= 1。如果 n 大于封闭环路的数量,则退出所有封闭环路。返回值为 0,除非 n 不大于或等于 1。(( ...))
if (( b > 5 )); then...
[[ ${b} -gt 5 ]]
if [[ ${b} -gt 5 ]]; then ... fi
break n
n
n
n
break 2
break 2
break
2