打破嵌套循环中的内循环(BASH)

问题描述 投票:0回答:1

我决定尝试一下循环只是为了了解循环在 bash 中的工作原理。 但我就是那个被玩弄的人。 我所知道的是,break 调用有助于停止特定的循环

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 循环更改为

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个月大。

linux bash shell for-loop break
1个回答
0
投票

我会做什么:

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"

请注意仅使用

break
,因为
break 2
也会破坏外循环。

© www.soinside.com 2019 - 2024. All rights reserved.