在本文中,我们将了解如何在 bash 脚本中使用 break 和 continue 。在 bash 中,我们有三个主要的循环结构(for、while、until)。break 和 continue 语句是 bash 内置的,用于改变循环的流程。这种 break 和 continue 的概念在流行的编程语言(如 Python )中可用。
linuxmi@linuxmi:~/www.linuxmi.com$ type -a break continue
break 是 shell 内建
continue 是 shell 内建
Bash 内置命令
使用 Break 语句退出循环
break 语句将退出循环,并将控制传递给循环中的下一个语句。您可以运行 help 命令来获取有关 break 语句的一些信息。
linuxmi@linuxmi:~/www.linuxmi.com$ help break
break: break [n]
退出 for、while 或 until 循环
退出一个 FOR、WHILE 或 UNTIL 循环。如果指定了N,则跳出N重
循环
退出状态:
退出状态为0除非 N 不大于或等于 1
Break 帮助命令
break 的基本语法。
看看下面的例子。这是一个简单的 for 循环,它以 2 的增量步长迭代从 1 到 20 的值范围。条件语句将计算表达式,当表达式为 true 时($val = 9),它将运行 break 语句并且循环将终止,跳过剩余的迭代。
#!/usr/bin/bash
# Linux迷 www.linuxmi.com
for val in {1..20..2}
do
if [[ $val -eq 9 ]]
then
break
else
echo "打印 ${val}"
fi
done
break 语句
使用 continue 语句跳过迭代
如果不想完全退出循环而是在满足某个条件时跳过代码块怎么办?这可以通过 continue 语句来完成。continue 语句会在满足某个条件时跳过代码块的执行,将控制权交还给循环语句进行下一次迭代。
访问帮助:
linuxmi@linuxmi:~/www.linuxmi.com$ help continue
continue: continue [n]
继续 for、while 或 until 循环。
继续当前 FOR、WHILE 或 UNTIL 循环的下一步。
如果指定了 N, 则继续当前的第 N 重循环。
退出状态:
退出状态为 0 除非 N 不大于或等于1
continue 帮助
看看下面的例子。这与我们用来演示 break 语句的示例相同。现在,当 Val 的计算结果为 9 时,continue 语句将跳过所有剩余的代码块,并将控制权传递给 for 循环以进行下一次迭代。
#!/usr/bin/bash
# Linux迷 www.linuxmi.com
for val in {1..20..2}
do
if [[ $val -eq 9 ]]
then
continue
else
echo "打印 ${val}"
fi
done
continue 声明
如果你了解 Python,那么 break 和 continue 的行为在 Python 中也是一样的。但是 Python 提供了一种称为 pass 的循环控制语句。
Pass 就像一个 null 语句,解释器会读取它但不会执行任何操作。它只是导致没有操作。Bash 没有提供类似的语句,但我们可以使用 true 关键字或冒号 (:)来模拟这种行为。true 和冒号都是 shell 内置的,不执行任何操作。
linuxmi@linuxmi:~/www.linuxmi.com$ type -a : true
: 是 shell 内建
true 是 shell 内建
true 是 /usr/bin/true
true 是 /bin/true
True 和 Colon Shell 内置
看看下面的例子。当条件语句被评估为true($val = 9)时,true语句将不执行任何操作,循环将继续。
#!/usr/bin/bash
# Linux迷 www.linuxmi.com
for val in {1..20..2}
do
if [[ $val -eq 9 ]]
then
true
fi
echo "打印 ${val}"
done
Pass 声明
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341