所有循环的生命周期都是有限的,通过改变条件的真假,来决定循环是否能断绝执行,如果循环条件一直不改变,循环可能一直执行下去,这就是无限循环,需要停止循环或跳过循环的迭代。就需要使用break和continue。本文就主要介绍一下Linux shell脚本中循环控制(break、continue)。

1、break

break用于在执行完break语句之前的所有代码行之后终止整个循环的执行。

语法

break语句用于退出循环

break

break命令也可以使用这种格式从嵌套循环中退出

break n

注意n指定了第n层循环退出。

例如,

#!/bin/bash
a=0
while [ $a -lt 10 ]
do
   echo $a
   if [ $a -eq 5 ]
   then
      break
   fi
   a=`expr $a + 1`
done

输出:

0
1
2
3
4
5

使用 break n退出循环:

#!/bin/bash
for var1 in 1 2 3
do
   for var2 in 0 5
   do
      if [ $var1 -eq 2 -a $var2 -eq 0 ]
      then
         break 2
      else
         echo "$var1 $var2"
      fi
   done
done

注意:一个不带参数的break 循环只能退出最内层的循环,而break n可以退出n层循环。

2、continue

ontinue语句与break命令用法差不多,不同之处在于它导致退出循环的当前迭代,而不是整个循环。当发生错误但想尝试执行循环的下一次迭代时,此语句非常有用。

语法

continue

break语句一样,可以给continue命令一个整数参数,以跳过嵌套循环中的命令。

continue n

注意n指定了第n层循环continue

例如,

#!/bin/bash
a=10
b=15
while [ $a -le $b ]
do
  ((a++))
  if [ $a -eq 11 ] || [ $a -eq 13 ]
    then
        continue
  fi
  echo $a
done

输出:

$ bash demo.sh 
12
14
15
16

continue直接跳过本次循环,进入下一次循环。

推荐文档