Unix / Linux - Shell 循环控制
-
简述
本章,我们将讨论 Unix 中的 shell 循环控制。到目前为止,您已经了解了创建循环和使用循环来完成不同的任务。有时您需要停止循环或跳过循环的迭代。在本章中,我们将学习以下两个用于控制 shell 循环的语句:-
break 语句
-
continue 语句
-
-
无限循环
所有循环的生命周期都是有限的,一旦条件为假或真,取决于循环,它们就会出现。如果不满足所需条件,循环可能会一直持续下去。永远执行而不终止的循环执行无限次。因此,这种循环称为无限循环。例子
这是一个简单的例子,它使用 while 循环显示数字零到九 -#!/bin/sh a=10 until [ $a -lt 10 ] do echo $a a=`expr $a + 1` done
这个循环永远持续下去,因为 a 总是 greater than 或者 equal to 10 并且它永远不会少于 10。 -
break 声明
这 break语句用于在完成执行到 break 语句的所有代码行之后终止整个循环的执行。然后它会逐步执行循环结束后的代码。句法
以下 break 语句用于跳出循环 -break
break 命令也可用于退出使用此格式的嵌套循环 -break n
这里 n 指定 nth 封闭循环到退出。例子
这是一个简单的例子,它显示循环一旦终止 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 循环的简单示例。如果出现以下情况,此脚本将break两个循环var1 equals 2 和 var2 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
执行后,您将收到以下结果。在内部循环中,您有一个带参数 2 的 break 命令。这表明如果满足条件,您应该退出外部循环并最终退出内部循环。1 0 1 5
-
continue 声明
这 continue 声明类似于 break 命令,除了它会导致循环的当前迭代退出,而不是整个循环。当发生错误但您想尝试执行循环的下一次迭代时,此语句很有用。句法
continue
与 break 语句一样,可以给 continue 命令一个整数参数以跳过嵌套循环中的命令。continue n
这里 n 指定 nth 封闭循环 continue 。例子
以下循环使用 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