概述
首先,要明确“break”与“continue”的区别:
break:在for循环使用break,则跳出这个循环,循环命令结束
continue: 使用后,在当前循环终止命令,直接进入下个循环
而break 与 countine 都是作用于单个循环,如果想要进行多层循环操作,则需要在后面加数字,如
break 2和continue 2。
正常二层循环
例:在未加入上述命令前,先看看下面二层循环的正常输出。
#!/bin/bash
for ((a=1; a<=3; a++)) //外层循环
do
echo "outer loop: $a" //外层循环输出
for ((b=1; b<=4; b++)) //内层循环
do
echo "inter loop: $b" //内层循环输出
done
done
结果:
执行过程:
先进行第一个外循环,输出结果1,然后进入内层,循环四次,输出四次1234,然后开始第二个外循环,输出结果2,再进入内循环,按之前的操作运行,直到外层的循环完成。
break
#!/bin/bash
for ((a=1; a<=3; a++))
do
echo "outer loop: $a"
for ((b=1; b<=4; b++))
do
if [ $b -eq 3 ] //在内层循环中嵌入一个条件语句,当b等于3的时候,条件成立
then
break //执行break,跳出内层循环,继续外层循环
fi
echo "inter loop: $b"
done
done
结果:
执行过程:
第一次外循环,首先外层输出1,然后进入内循环,正常循环输出1和2,等到第三个循环时,b=3,满足条件,执行条件内的命令,直接跳出内层循环,不再执行此循环的输出及后面的内循环,进入第二个外循环,循环往复,直到循环结束。
continue
#!/bin/bash
for ((a=1; a<=3; a++))
do
echo "outer loop: $a"
for ((b=1; b<=4; b++))
do
if [ $b -eq 3 ]
then
continue //满足条件执行,中止当前循环,进入下个循环
fi
echo "inter loop: $b"
done
done
结果:
执行过程:
第一个外循环输出1后,进入内循环,正常输出12后,到第三个内循环,满足条件,中断当前循环,输出命令未执行,直接进入第四个内循环,输出4,然后进入第二个外循环,循环往复,直到结束。
break 2
#!/bin/bash
for ((a=1; a<=3; a++))
do
echo "outer loop: $a"
for ((b=1; b<=4; b++))
do
if [ $b -eq 3 ]
then
break 2 //内循环中,条件满足,直接跳出两层循环,因为只有两层,直接结束
fi
echo "inter loop: $b"
done
done
结果:
执行过程:
先执行第一个外部循环,输出1,然后进入内循环,正常输出12,直到b=3,符合条件,先跳出内循环,再跳出外循环,结束 。
continue 2
1.按原来输出顺序看
#!/bin/bash
for ((a=1; a<=3; a++))
do
echo "outer loop: $a"
for ((b=1; b<=4; b++))
do
if [ $b -eq 3 ]
? then
continue 2 //当内循环执行到3的时候,中断内层循环,再中断外层循环
fi
echo "inter loop: $b"
done
done
结果:
执行过程:
先进行第一个外循环,输出1,然后内循环输出12,到3的时候,执行continue 2,内循环先中止,不输出,然后外循环中止,跳过第一个外循环,直接执行第二个外循环,循环往复。
2. 把外层循环的输出放到内循环执行完后看
#!/bin/bash
for ((a=1; a<=3; a++))
do
for ((b=1; b<=4; b++))
do
if [ $b -eq 3 ]
then
continue 2
fi
echo "inter loop: $b"
done
echo "outer loop: $a" //外循环在内循环完成后输出
done
结果:
执行过程 :
可以看到,输出显示只有内层循环的输出,因为在第一次循环的时候,开启外循环,进入内循环,正常输出12,到3的时候,内循环先中止,然后第一个外循环被中止,外循环未往下执行输出这个命令,就进入第二个循环,循环往复,每一次输出都在内循环到3的时候被提前中断。
通过以上例子,能对break与contiinue了解个大概,通过结合别的命令实现目标结果。