Unix 简明教程

Unix / Linux - Shell Loop Control

在本章中,我们将讨论 Unix 中的 Shell 循环控制。迄今为止,您已了解如何创建循环并使用循环来完成不同任务。有时,您需要停止循环或跳过循环迭代。

在本章中,我们将学习用于控制 Shell 循环的以下两个语句 −

  1. The break statement

  2. The continue statement

The infinite Loop

所有循环都有一个有限的生命周期,并且根据循环的不同,当条件为假或真时,它们就会退出。

如果未满足所需条件,则循环可能无限期地继续。无限期执行并且不会终止的循环将无限次执行。因此,这样的循环称为无限循环。

Example

下面是一个简单的示例,它使用 while 循环来显示数字 0 到 9 −

#!/bin/sh

a=10

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

此循环无限期地继续,因为 a 始终为 greater thanequal to 10 ,并且它永远不会小于 10。

The break Statement

break 语句用于在执行到 break 语句的所有代码行后终止整个循环的执行。然后,它向下执行到循环结束后面的代码。

Syntax

以下 break 语句用于退出循环 −

break

break 命令还可以使用此格式从嵌套循环中退出 −

break n

这里 n 指定了退出的 nth 循环。

Example

下面是一个简单的示例,它显示了当 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 equals 2var2 equals 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

执行后,您将收到以下结果。在内部循环中,您有一个 break 命令,参数为 2。这表示,如果满足条件,则您应该退出外部循环,并最终也退出内部循环。

1 0
1 5

The continue statement

continue 语句类似于 break 命令,只不过它导致退出循环的当前迭代,而不是整个循环。

出现错误但您希望尝试执行循环的下一个迭代时,此语句很有用。

Syntax

continue

与 break 语句一样,可以向 continue 命令提供一个整数参数,以便从嵌套循环中跳过命令。

continue n

这里 n 指定了继续执行的 nth 循环。

Example

以下循环使用 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