Bash Continue 如何恢复循环


Bash 是一种流行的命令行界面 shell,广泛用于 Linux 和 Unix 操作系统。Bash 最有用的功能之一是其执行循环的能力,它允许您自动化重复性任务。但是,有时您可能希望中断循环并在稍后继续执行。这就是 Bash continue 语句派上用场的地方。在本文中,我们将探讨如何使用 Bash continue 语句恢复循环。

什么是 Bash 循环?

在我们深入探讨 Bash continue 语句的细节之前,了解什么是 Bash 循环非常重要。循环是一种编程结构,允许您重复执行一段代码。在 Bash 中,有两种类型的循环:for 循环和 while 循环。for 循环用于迭代一组值,而 while 循环用于重复执行一段代码,直到某个条件为真。

Bash Continue 语句

Bash continue 语句用于跳过循环的当前迭代并继续执行下一迭代。如果您想跳过某些值或需要中断循环并在稍后恢复,这将非常有用。continue 语句的语法如下:

continue

当 Bash 遇到 continue 语句时,它会立即停止执行循环的当前迭代并继续执行下一迭代。

将 Bash Continue 与 for 循环一起使用

让我们看看如何将 Bash continue 语句与 for 循环一起使用。在这个例子中,我们将迭代一组值并跳过任何可以被 2 整除的值:

示例

for i in {1..10}
do
   if (( i % 2 == 0 )); then
      continue
   fi
      echo $i
done

在这个例子中,我们使用 {1..10} 范围运算符来迭代值 1 到 10。在循环内部,我们使用模运算符来检查当前值是否可以被 2 整除。如果是,我们使用 continue 语句跳过当前迭代并继续执行下一个。如果不是,我们使用 echo 命令打印当前值。

输出

此脚本的输出将是:

1
3
5
7
9

如您所见,值 2、4、6、8 和 10 被跳过了,因为它们可以被 2 整除。

将 Bash Continue 与 while 循环一起使用

现在让我们看看如何将 Bash continue 语句与 while 循环一起使用。在这个例子中,我们将使用 while 循环迭代值 1 到 10 并跳过任何大于 5 的值:

示例

i=1
while (( i <= 10 ))
do
    if (( i > 5 )); then
        (( i++ ))
        continue
    fi
    echo $i
    (( i++ ))
done

在这个例子中,我们将变量 i 初始化为 1 并使用 while 循环迭代值 1 到 10。在循环内部,我们检查当前值是否大于 5。如果是,我们使用 continue 语句跳过当前迭代并继续执行下一个。我们还使用 (( i++ )) 命令递增 i 的值。如果当前值不大于 5,我们使用 echo 命令打印当前值。

输出

此脚本的输出将是:

1
2
3
4
5

如您所见,值 6、7、

中断后继续循环

现在我们已经了解了如何使用 Bash continue 语句跳过循环的迭代,让我们看看如何在中断循环后恢复循环。有几种方法可以做到这一点,具体取决于情况。

使用循环控制变量

中断循环后恢复循环的一种方法是使用循环控制变量。循环控制变量是一个变量,用于跟踪循环的当前状态。

示例

i=1
while (( i <= 10 ))
do
    if (( i == 5 )); then
        break
    fi
    echo $i
    (( i++ ))
done

echo "Loop interrupted at i = $i"

while (( i <= 10 ))
do
    echo $i
    (( i++ ))
done

在这个例子中,我们将变量 i 初始化为 1 并使用 while 循环迭代值 1 到 10。在循环内部,我们检查 i 的当前值是否等于 5。如果是,我们使用 break 语句中断循环。然后,我们打印一条消息,指示循环在 i = 5 时被中断。

循环中断后,我们使用另一个 while 循环恢复从中断处开始的迭代。我们只需从 i 的当前值开始循环,并继续迭代直到循环结束。

输出

此脚本的输出将是:

1
2
3
4
Loop interrupted at i = 5
5
6
7
8
9
10

使用函数 中断循环后恢复循环的另一种方法是使用函数。函数是可以重复调用的代码块。H

示例

function myloop() {
    for i in {1..10}
    do
        if (( i == 5 )); then
            return $i
        fi
        echo $i
    done
}

i=$(myloop)
echo "Loop interrupted at i = $i"

for (( j=$i; j<=10; j++ ))
do
    echo $j
done

在这个例子中,我们定义了一个名为 myloop 的函数,其中包含一个 for 循环。在循环内部,我们检查 i 的当前值是否等于 5。如果是,我们使用 return 语句中断循环并返回 i 的值。

循环中断后,我们调用 myloop 函数并将返回值存储在变量 i 中。然后,我们打印一条消息,指示循环在 i = 5 时被中断。

最后,我们使用 for 循环恢复从中断处开始的迭代。我们将变量 j 初始化为 i 的值,并继续迭代直到循环结束。

输出

此脚本的输出将是:

1
2
3
4
Loop interrupted at i = 5
5
6
7
8
9
10

结论

Bash continue 语句是一个强大的工具,允许您跳过循环的迭代并在中断处恢复循环。通过将 continue 语句与循环控制变量或函数结合使用,您可以以多种不同的方式中断和恢复循环。无论您是在自动化重复性任务还是处理大量数据,Bash continue 语句对于任何 Bash 程序员来说都是一个必不可少的工具。

更新于: 2023年3月31日

3K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告