Linux Shell 脚本:循环控制 0 个改进

在本章中,我们将讨论 Unix 中的 shell 循环控制。到目前为止,您已经研究了创建循环和使用循环来完成不同的任务。但有时需要停止循环或跳过循环的迭代。

在本章中,我们将学习以下两种用于控制 shell 循环的语句。

  • The break statement

  • The continue statement

无限循环#

所有的循环周期都是有限的,一旦满足循环里设定的条件,不管是真是假,它们就会跳出循环。

如果不满足所需条件,循环可能会永远进行下去。无法终止无限次数的循环将会永远执行下去。因此,这种循环被称为无限循环。

示例#

这里有一个简单的例子,它使用 while 循环来显示零到九的数字 −

#!/bin/sh

a=10

until [ $a -lt 10 ]
do
   echo $a
   a=`expr $a + 1`
done

这个循环将永远持续下去,因为 a 总是 大于等于 10 ,这就意味着它永远不可能小于 10 。

break 语句#

在 break 语句之前所有的代码都被执行之后,使用 break 语句终止整个循环的执行。 之后,代码将跳转到循环结束的地方继续执行下去。

语法#

下面的 break 语句用于从循环中跳出 −

break

按照这种语法格式,还可以使用 break 语句跳出嵌套循环 −

break n

这里 n 指定了从第 n^th^ 层循环中跳出。

示例#

这里有一个简单的例子演示当 a 变为 5 时,循环就会终止 −

#!/bin/sh

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

下面是嵌套 for 循环的一个简单示例。如果 var1 等于 2var2 等于 0 ,则此脚本将跳出两个循环 −

#!/bin/sh

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

脚本执行后,您将获得以下结果。在内层循环中,您使用用一个参数值 2 来触发 break 语句。这表明,如果满足了一个条件,先中止外层循环,再从内存循环中退出。

1 0
1 5

continue 语句#

continue 语句类似于 break 语句,但它只是退出本次循环中的迭代,而不是整个循环。

当错误发生时而您又希望尝试执行下一次循环的迭代,就可以使用此语句。

语法#

continue

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

continue n

这里 n 指定了从第 n^th^ 层循环继续执行。

示例#

下面的循环利用了 continue 语句返回的 continue 声明,并开始处理下一个语句声明 −

#!/bin/sh

NUMS="1 2 3 4 5 6 7"

for NUM in $NUMS
do
   Q=`expr $NUM % 2`
   if [ $Q -eq 0 ]
   then
      echo "Number is an even number!!"
      continue
   fi
   echo "Found odd number"
done

脚本执行后,您将获得以下结果 −

Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number
本文为 Wiki 文章,邀您参与纠错、纰漏和优化