Unix / Linux - Shell循环控制

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

在本章中,我们将学习以下两个用于控制shell循环和减号的语句;

  • 中断声明

  • 继续声明

无限循环

所有循环都有限生命,一旦条件为假或真,它们就会出现,具体取决于循环.

如果不满足所需条件,循环可能会永远持续.永久执行而不终止的循环执行无限次.出于这个原因,这样的循环称为无限循环.

示例

这是一个使用的简单示例循环显示零到九和零的数字;

#!/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 n


这里 n 指定 n th 封闭循环到退出.

示例

这是一个简单的例子,它表明一旦 a 变为5&minus,循环就会终止;

#!/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等于2 var2等于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 语句类似于 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