Bash 中的 break 和 continue
循环使您可以多次运行一个或多个命令,直到满足特定条件为止。但是,有时您可能需要更改循环流程并终止循环或仅终止当前迭代。
在 bash 中, break
和 continue
语句允许您控制循环执行。
break
语句
break
语句终止当前循环,并将程序控制传递给终止循环之后的命令。它用于从 for
, while
, until
,或 select
循环中跳出。 break
语句的语法采用以下形式:
break [n]
[n]
是一个可选参数,并且必须大于或等于1。 [n]
提供时,将退出第n个封闭循环。 break 1
等同于 break
。
为了更好地理解如何使用 break
语句,让我们看一下以下示例。
在下面的脚本中,一旦当前迭代的项目等于 2
, while
循环的执行将被中断:
i=0
while [[ $i -lt 5 ]]
do
echo "Number: $i"
((i++))
if [[ $i -eq 2 ]]; then
break
fi
done
echo 'All Done!'
Number: 0
Number: 1
All Done!
下面是 break
在嵌套 for
循环中使用语句的示例。
如果 [n]
未提供参数,则 break
终止最里面的封闭循环。外循环不终止:
for i in {1..3}; do
for j in {1..3}; do
if [[ $j -eq 2 ]]; then
break
fi
echo "j: $j"
done
echo "i: $i"
done
echo 'All Done!'
j: 1
i: 1
j: 1
i: 2
j: 1
i: 3
All Done!
如果要退出外循环,请使用 break 2
。参数 2
告诉 break
终止第二个封闭循环:
for i in {1..3}; do
for j in {1..3}; do
if [[ $j -eq 2 ]]; then
break 2
fi
echo "j: $j"
done
echo "i: $i"
done
echo 'All Done!'
j: 1
All Done!
continue
语句
continue
语句为当前迭代跳过封闭循环体内的其余命令,并将程序控制传递给循环的下一次迭代。
continue
语句的语法如下:
continue [n]
[n]
参数是可选的,并且可以大于或等于1。 [n]
给出该参数时,将恢复第n个封闭循环。 continue 1
等同于 continue
。
在下面的例子中,一旦当前迭代的项等于到 2
, continue
语句将导致执行返回到循环的开始,继续进行下一次迭代。
i=0
while [[ $i -lt 5 ]]; do
((i++))
if [[ "$i" == '2' ]]; then
continue
fi
echo "Number: $i"
done
echo 'All Done!'
Number: 1
Number: 3
Number: 4
Number: 5
All Done!
以下脚本打印从 1
到 50
可以被整除的数字 9
。
如果一个数字不能被整除 9
,则 continue
语句将跳过 echo
命令,并将控制权传递给循环的下一个迭代。
for i in {1..50}; do
if [[ $(( $i % 9 )) -ne 0 ]]; then
continue
fi
echo "Divisible by 9: $i"
done
Divisible by 9: 9
Divisible by 9: 18
Divisible by 9: 27
Divisible by 9: 36
Divisible by 9: 45
结论
循环是编程语言的基本概念之一。在 Bash 等脚本语言中,循环对于自动执行重复性任务很有用。
break
语句用于退出当前循环。 continue
语句用于退出循环的当前迭代并开始下一个迭代。