Unix / Linux - Shell 循环控制
在本章中,我们将讨论 Unix 中的 shell 循环控制。 到目前为止,您已经了解了创建循环和使用循环来完成不同的任务。 有时您需要停止循环或跳过循环的迭代。
在本章中,我们将学习以下两个用于控制 shell 循环的语句 −
break 语句
continue 语句
无限循环
所有循环的生命周期都是有限的,一旦条件为假或为真,它们就会退出,具体取决于循环。
如果不满足要求的条件,循环可能永远持续下去。 一个永远执行而不会终止的循环会执行无限次。 因此,这种循环称为无限循环。
示例
这是一个使用 while 循环显示数字 0 到 9 的简单示例 −
#!/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 指定了到出口的 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循环的简单例子。 如果 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 语句
continue 语句类似于break 命令,只是它导致循环的当前迭代退出,而不是整个循环。
当发生错误但您想尝试执行循环的下一次迭代时,此语句很有用。
语法
continue
与 break 语句一样,可以为 continue 命令提供一个整数参数以跳过嵌套循环中的命令。
continue n
此处 n 指定要从第 nth 个封闭循环继续。
示例
下面的循环利用了 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