Bash 是一种功能强大的脚本语言,通常用于自动化和系统管理任务。 Bash 脚本中最重要的概念之一是控制流,它是指脚本根据各种条件执行不同命令的方式。 Bash 中两个关键的控制流语句是 break 和 continue,它们可以帮助您控制代码的执行并使其更加高效。
Bash 中的“中断”和“继续”是什么?
break 和 continue 是两个 Bash 控制流语句,可用于更改循环或 switch 语句的流程。它们允许您根据特定条件退出循环或跳过某些迭代。
以下是 Bash 中如何中断和继续工作的简要概述:
-
break:当在循环或 switch 语句中使用时,break 将立即退出循环或 switch 语句,并从循环或 switch 语句后的下一个命令继续执行脚本。
-
继续:当在循环中使用时, continue 将跳过当前迭代并继续进行下一次迭代。换句话说,它允许您根据特定条件跳过某些迭代。
Break 和 continue 都有助于提高 Bash 脚本的效率,因为它们允许您控制代码的执行并避免不必要的迭代。
在 Bash 中使用 Break
让我们首先看看如何在 Bash 中使用break。 break 常用于循环和 switch 语句中,用于在满足某个条件时立即退出循环或 switch 语句。
以下是如何在循环中使用break的示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then
break
fi
echo $i
done
echo “循环完成”
|
在此示例中,我们有一个 for 循环,它将迭代从 1 到 10 的 i 值。但是,我们添加了一个 if 语句来检查 i 是否等于 5。如果 i 等于 5,我们将使用break语句立即退出循环。
如果我们运行这个脚本,我们将看到以下输出:
Output
1
2
3
4
Loop complete
正如您所看到的,由于break语句的原因,循环在退出之前仅迭代了4次。
在 Bash 中使用“继续”
接下来,我们看看如何在 Bash 中使用 continue。 continue 用于在循环中根据特定条件跳过某些迭代。
以下是如何在循环中使用 continue 的示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then
continue
fi
echo $i
done
echo “循环完成”
|
在此示例中,我们有一个 for 循环,它将迭代从 1 到 10 的 i 值。但是,我们添加了一个 if 语句来检查 i 是否等于 5。如果 i 等于 5,我们将使用 continue 语句跳过该迭代并继续下一次迭代。
如果我们运行这个脚本,我们将看到以下输出:
Output
1
2
3
4
6
7
8
9
10
Loop complete
正如您所看到的,循环跳过了“i”等于 5 的迭代,并继续执行其余迭代。
在 Switch 语句中使用 Break 和 continue
除了循环之外,Bash 中的 switch 语句中还可以使用break 和 continue。
以下是如何在 switch 语句中使用 break 的示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#!/bin/bash
case $1 in
start)
echo 「开始服务」
;;
stop)
echo “停止服务”
;;
restart)
echo “重新启动服务”
;;
*)
echo “选项无效”
break
;;
esac
echo “Switch 语句完成”
|
在此示例中,我们有一个 switch 语句,它将检查第一个命令行参数 ($1) 的值。如果$1等于“start”、“stop”或“restart”,则会执行相应的命令。如果$1不等于这些值中的任何一个,它将输出错误消息并使用break语句退出switch语句。
如果我们使用 ./myscript.sh invalid 命令运行此脚本,我们将看到以下输出:
Output
Invalid option
Switch statement complete
正如您所看到的,脚本输出错误消息,然后使用break语句退出switch语句。
以下是如何在 switch 语句中使用 continue 的示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#!/bin/bash
case $1 in
start)
echo 「开始服务」
;;
stop)
echo “停止服务”
;;
restart)
echo “重新启动服务”
;;
*)
continue
;;
esac
echo “Switch 语句完成”
|
在此示例中,我们修改了前面的脚本以使用 continue 语句而不是 break。如果 $1 不等于任何预期值,脚本将简单地跳过 switch 语句的该迭代并继续进行下一次迭代。
如果我们使用 ./myscript.sh invalid 命令运行此脚本,我们将看到以下输出:
Output
Switch statement complete
正如您所看到的,脚本只是跳过了 $1 无效的迭代,并继续执行脚本的其余部分。
结论
在本教程中,我们介绍了在 Bash 脚本中使用 break 和 continue 的基础知识。这些语句是控制代码执行和提高脚本效率的强大工具。通过有效地使用 Break 和 continue,您可以创建更健壮、更高效的 Bash 脚本,以处理各种任务和场景。