shell小技巧——for循环中break与continue,break 2与continue 2的用法

概述

首先,要明确“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的时候被提前中断。

扫描二维码关注公众号,回复: 11639949 查看本文章

通过以上例子,能对break与contiinue了解个大概,通过结合别的命令实现目标结果。

猜你喜欢

转载自blog.csdn.net/m0_47452405/article/details/108223172