bash break和continue语句
时间:2020-03-05 15:25:58 来源:igfitidea点击:
循环使我们可以多次运行一个或者多个命令,直到满足特定条件为止。
但是,有时我们可能需要更改循环流程并终止循环或者仅终止当前迭代。
在Bash中,可以使用'break'和'continue'语句来控制循环执行。
Bash的“beak”语句
“ 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!
这是在嵌套的“ for”循环中使用“ break”语句的示例。
如果未提供参数'[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!
Bash“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