Bash Case

2025年3月17日 | 阅读 3 分钟

在本主题中,我们将讨论 case 语句的基础知识以及如何在 Bash 脚本中使用它们。

Bash case 语句是具有许多 ELIF 元素的 IF-THEN-ELSE 的最简单形式。 使用 case 语句使我们的 bash 脚本更具可读性且更易于维护。 它们通常用于简化具有多个不同选择的复杂条件。

Bash case 语句遵循与 Javascript 或 C switch 语句类似的逻辑。 存在细微的差异,如下所示

  • Bash case 语句接受一个值一次,并多次测试该值。 一旦找到模式并执行了与其链接的语句,它就会停止搜索模式,这几乎与 C switch 语句的情况相反。

Case 语句语法

bash case 语句的语法如下所示

以下是 bash case 语句的一些关键点

  • bash 中的每个 case 语句都以“case”关键字开头,后跟 case 表达式和“in”关键字。 case 语句由“esac”关键字关闭。
  • 我们可以应用由 | 分隔的多个模式 运算符。 ) 运算符指示模式列表的终止。
  • 包含语句的模式称为子句,必须以双分号 (;;) 结尾。
  • 星号符号 (*) 用作定义默认情况的最终模式。 当用作最后一个 case 时,它用作默认情况。

工作原理

首先,case 语句扩展表达式并尝试与包含的每个模式匹配。 当找到匹配项时,所有链接的语句都会执行到双分号 (;;) 为止。 在第一次匹配后,case 以最后执行的语句的退出状态终止。

如果没有匹配的模式,则 case 的退出状态为零。 否则,返回状态是执行语句的退出状态。

如果使用默认星号模式,则在没有匹配的模式的情况下将执行该模式。

让我们尝试通过几个示例来理解这种机制

示例 1

在本示例中,我们定义了一个简单的场景来演示 case 语句的使用。

Bash 脚本

输出

Bash Case

示例 2

在本示例中,我们定义了一个组合场景,其中还存在一个默认情况,当找不到以前匹配的 case 时。

Bash 脚本

输出

我们使用三个不同的输入运行了脚本,请查看下面的输出

Bash Case

结论

在本主题中,我们通过示例了解了 Bash Case 语句的语法和用法。


下一个主题Bash For 循环