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 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!