break命令是退出循环的一个简单方法。可以用break命令来退出任意类型的循环,包括 while和until循环。
有几种情况可以使用break命令,那么到底是哪些情况下可以使用break命令呢?下面南昌网络公司-百恒网络就来和大家介绍一下:
1、跳出单个循环
在shell执行break命令时,它会尝试跳出当前正在执行的循环。
$ cat test17
#!/bin/bash
# breaking out of a for loop
for var1 in 1 2 3 4 5 6 7 8 9 10
do
if [ $var1 -eq 5 ]
then
break
fi
echo "Iteration number: $var1"
done
echo "The for loop is completed"
$ ./test17
Iteration number: 1
Iteration number: 2
Iteration number: 3
Iteration number: 4
The for loop is completed
$
for循环通常都会遍历列表中指定的所有值。但当满足if-then的条件时,shell会执行break 命令,停止for循环。
这种方法同样适用于while和until循环。
$ cat test18
#!/bin/bash
# breaking out of a while loop
var1=1
while [ $var1 -lt 10 ]
do
if [ $var1 -eq 5 ]
then
break
fi
echo "Iteration: $var1"
var1=$[ $var1 + 1 ]
done
echo "The while loop is completed"
$ ./test18
Iteration: 1
Iteration: 2
Iteration: 3
Iteration: 4
The while loop is completed
$
while循环会在if-then的条件满足时执行break命令,终止。
2、跳出内部循环
在处理多个循环时,break命令会自动终止你所在的内层的循环。
$ cat test19
#!/bin/bash
# breaking out of an inner loop
for (( a = 1; a < 4; a++ ))
do
echo "Outer loop: $a"
for (( b = 1; b < 100; b++ ))
do
if [ $b -eq 5 ]
then
break
fi
echo " Inner loop: $b"
done
done $ ./test19
Outer loop: 1
Inner loop: 1
Inner loop: 2
Inner loop: 3
Inner loop: 4
Outer loop: 2
Inner loop: 1
Inner loop: 2
Inner loop: 3
Inner loop: 4
Outer loop: 3
Inner loop: 1
Inner loop: 2
Inner loop: 3
Inner loop: 4
$
内部循环里的for语句指明当变量b等于100时停止迭代。但内部循环的if-then语句指明当 变量b的值等于5时执行break命令。注意,即使内部循环通过break命令终止了,外部循环依然 继续执行。
3、跳出外部循环
有时你在内部循环,但需要停止外部循环。break命令接受单个命令行参数值:
break n
其中n指定了要跳出的循环层级。默认情况下,n为1,表明跳出的是当前的循环。如果你将 n设为2,break命令就会停止下一级的外部循环。
$ cat test20
#!/bin/bash
# breaking out of an outer loop
for (( a = 1; a < 4; a++ ))
do
echo "Outer loop: $a"
for (( b = 1; b < 100; b++ ))
do
if [ $b -gt 4 ]
then
break 2
fi
echo " Inner loop: $b"
done
done
$ ./test20
Outer loop: 1
Inner loop: 1
Inner loop: 2
Inner loop: 3
Inner loop: 4
$
注意,当shell执行了break命令后,外部循环就停止了。
以上便是百恒网络为大家介绍的关于shell脚本中使用break命令退出循环的几种情况,了解更多关于shell脚本方面的知识,欢迎访问百恒网络,百恒网络是优秀的南昌网络公司之一,精通各种网站建设语言方面的技术,主营网站建设、微信开发、APP开发等服务,如有需要我们服务的地方,可随时来电和我们联系!