首页 > 编程笔记

Shell break和continue语句的用法

在循环的过程中有两个命令可以控制循环,分别是 break 命令和 continue 命令。

Shell break语句

break 命令允许跳出所有的循环,包括 while 和 until 循环。

【例 1】跳出单个循环。
使用 Vim 编辑器打开脚本文件 test.sh,输入 i 命令进入插入模式,输入以下命令:

#!/bin/bash

for var1 in 1 2 3 4 5 6
do
    if [ $var1 -eq 5 ]
    then
        break
fi
    echo "var1: $var1"
done
echo "exit"

使用 sh(Bash)进程来执行脚本文件,输出结果为:

[root@bogon ~]# sh test.sh
var1: 1
var1: 2
var1: 3
var1: 4
exit


【例 2】跳出内部循环。
使用 Vim 编辑器打开脚本文件 test.sh,输入 i 命令进入插入模式,输入如下命令:

#!/bin/bash

for (( a=1; a<4; a++ ))
do
    echo "outer: $a"
    for(( b=1; b<50; b++ ))
    do
       if [ $b -eq 5 ]
       then
           break
       fi
    echo "inner loop: $b"
    done
done

使用 sh(Bash)进程来执行脚本文件,输出结果为:

[root@bogon ~]# sh test.sh
outer: 1
inner loop: 1
inner loop: 2
inner loop: 3
inner loop: 4
outer: 2
inner loop: 1
inner loop: 2
inner loop: 3
inner loop: 4
outer: 3
inner loop: 1
inner loop: 2
inner loop: 3
inner loop: 4

从输出结果中可以看出,内部循环里的 for 语句表示当变量 b 等于 50 时停止迭代,而内部循环的 if-then 语句表示当变量 b 的值为 5 时执行 break 命令。当内部循环通过 break 命令停止时,外部循环仍然继续执行。

【例 3】跳出外部循环。
使用 Vim 编辑器打开脚本文件 test.sh,输入 i 命令进入插入模式,输入如下命令:

#!/bin/bash

for (( a=1; a<4; a++ ))
do
    echo "outer: $a"
    for(( b=1; b<50; b++ ))
    do
       if [ $b -eq 4 ]
       then
           break 2
       fi
    echo "inner loop: $b"
    done
done

使用 sh(Bash)进程来执行脚本文件,输出结果为:

[root@bogon ~]# sh test.sh
outer: 1
inner loop: 1
inner loop: 2
inner loop: 3

Shell continue语句

continue 命令可以提前终止某次循环的命令,但并不能完全终止整个循环。

【例 4】for 循环中使用 continue 命令。
使用 Vim 编辑器打开脚本文件 test.sh,输入 i 命令进入插入模式,输入如下命令:

#!/bin/bash

for (( var1=1; var1<15; var1++ ))
do
    if [ $var1 -gt 5 ] && [ $var1 -lt 10 ]
    then
        continue
    fi
    echo "num: $var1"
done

使用 sh(Bash)进程来执行脚本文件,输出结果为:

[root@bogon ~]# sh test.sh
num: 1
num: 2
num: 3
num: 4
num: 5
num: 10
num: 11
num: 12
num: 13
num: 14

优秀文章