📅  最后修改于: 2020-10-31 14:54:00             🧑  作者: Mango
在本章中,我们将讨论Unix中的Shell循环控制。到目前为止,您已经研究了创建循环和使用循环来完成不同的任务。有时您需要停止循环或跳过循环迭代。
在本章中,我们将学习以下两个用于控制Shell循环的语句-
中断声明
继续声明
所有循环的寿命有限,一旦条件为假或真(取决于循环),它们就会出现。
如果不满足所需条件,则循环可能永远持续下去。永远执行而不会终止的循环执行无限次。因此,这种循环称为无限循环。
这是一个简单的示例,使用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 n
在此, n指定到出口的第n个封闭循环。
这是一个简单的示例,显示一旦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语句类似于break命令,不同之处在于它使循环的当前迭代而不是整个循环退出。
当发生错误但您想尝试执行循环的下一次迭代时,此语句很有用。
continue
像break语句一样,可以为继续命令提供一个整数参数,以从嵌套循环中跳过命令。
continue n
在这里, n指定要继续的第n个封闭循环。
以下循环利用了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