多重for循环嵌套以及跳出循环的方法(break、exit、continue)

时间:2024-03-06 08:42:31

一、多重循环

1、双重循环

1.1 格式

#/bin/bash
#Double loop  

for ((i=1;i<=6;i++))
do
  echo "外循环为:$i"
  for ((j=1;j<=3;j++))
  do
    echo "--内循环为:$j"
  done
done  

1.2 实例操作

 

2、三重循环

2.1 格式

#/bin/bash
#Multiple loop  

for ((i=1;i<=2;i++))
do
  echo "外循环为:$i"
  for ((j=1;j<=2;j++))
  do
    echo "--内循环为:$j"
    for ((k=1;k<=2;k++))
    do
      echo "----内2循环为:$k"
    done
  done
done  

2.2 实例操作

3、多重循环

3.1 格式

#/bin/bash
#Multiple loop  

for ((i=1;i<=2;i++))
do
  echo "外循环为:$i"
  for ((j=1;j<=2;j++))
  do
    echo "--内循环为:$j"
    for ((k=1;k<=2;k++))
    do
      echo "----内2循环为:$k"
      for ((l=1;l<=2;l++))
      do
        echo "------内3循环为:$l"
      done
    done
  done
done  

3.2 实例操作

二、循环语句中的break

1、break的使用

当满足条件的情况下break会跳出当前循环体

2、当直接break时

表示跳出该层循环

2.1 格式

#/bin/bash
#Multiple loop  

for ((i=1;i<=2;i++))
do
  echo "外循环为:$i"
  for ((j=1;j<=2;j++))
  do
    echo "--内循环为:$j"
    for ((k=1;k<=2;k++))
    do
      echo "----内2循环为:$k"
      if [ $k -eq 1 ];then
         break
      fi
      for ((l=1;l<=2;l++))
      do
        echo "------内3循环为:$l"
      done
    done
  done
done

2.2  实例操作

  

3、当break +数字时

当直接break时,默认数字为1,即条件满足时跳出当前循环

例如:break 2 即表示跳出两层循环

3.1 格式

#/bin/bash
#Multiple loop  

for ((i=1;i<=2;i++))
do
  echo "外循环为:$i"
  for ((j=1;j<=2;j++))
  do
    echo "--内循环为:$j"
    for ((k=1;k<=2;k++))
    do
      echo "----内2循环为:$k"
      for ((l=1;l<=2;l++))
      do
        echo "------内3循环为:$l"
        if [ $l -eq 1 ];then
          break 3
        fi
      done
    done
  done
done

3.2 实例操作  

三、循环语句中的continue

continue中止某次循环中的命令,但不会完全中止整个命令

注意:while 多重循环中使用continue要慎重,位置如果放的不对,则会导致死循环

1、格式

#!/bin/bash
#Multiple loop

for ((i=1;i<=3;i++))
do
   echo "外循环为:$i"
   for ((j=1;j<=10;j++))
   do
     if [ $j -gt 3 -a $j -lt 9 ];then
        continue
     fi
     echo "---内循环为:$j"
   done
done  

2、实例操作

 四、shell脚本中的exit

当满足条件的情况下exit会直接退出当前脚本

1、格式

#!/bin/bash
#Multiple loop

for ((i=1;i<=3;i++))
do
   echo "外循环为:$i"
   for ((j=1;j<=10;j++))
   do
     if [ $j -gt 3 -a $j -lt 9 ];then
        #continue
        exit
     fi
     echo "---内循环为:$j"
   done
done

2、实例操作