bash case语句

本文概述

  • case是怎么运行的
  • 结论
在本主题中,我们将讨论case语句的基础以及如何在Bash脚本中使用它们。
Bash case语句是具有许多ELIF元素的IF-THEN-ELSE的最简单形式。使用case语句使我们的bash脚本更具可读性,更易于维护。这些通常用于简化具有多种不同选择的复杂条件。
Bash case语句遵循与Javascript或C switch语句类似的逻辑。略有不同,如下所示:
  • Bash case语句只接受一次值,然后多次测试该值。一旦找到模式并执行与其链接的语句,它将停止搜索模式,这与C switch语句的情况几乎相反。
case语句语法
bash case语句的语法如下:
case expression in pattern_1) statements ; ; pattern_2) statements ; ; pattern_3|pattern_4|pattern_5) statements ; ; pattern-n) statements ; ; *) statements ; ; esac

bash case语句有一些关键点:
  • bash中的每个case语句均以“ case”关键字开头,后跟case表达式和“ in”关键字。用’ esac’ 关键字关闭case语句。
  • 我们可以应用以|分隔的多个模式操作员。 )运算符指示模式列表的终止。
  • 包含语句的模式称为子句,并且必须以双分号(; ; )终止。
  • 星号(*)用作定义默认大小写的最终模式。当用作最后一种情况时,它用作默认情况。
case是怎么运行的首先,case语句扩展表达式并尝试与每个包含的模式匹配。找到匹配项后,将执行所有链接的语句,直到双分号(; ; )为止。在第一个匹配项之后,case以最后执行的语句的退出状态终止。
如果没有匹配的模式,则案例的退出状态为零。否则,返回状态是已执行语句的退出状态。
如果使用默认的星号模式,则在没有匹配模式的情况下将执行它。
让我们尝试通过一些示例来了解这种机制:
例子1
在此示例中,我们定义了一个简单的场景来演示case语句的用法。
Bash脚本
#!/bin/bashecho "Do you know Java Programming?" read -p "Yes/No? :" Answer case $Answer in Yes|yes|y|Y) echo "That's amazing." echo ; ; No|no|N|n) echo "It's easy. Let's start learning from srcmini." ; ; esac

输出量
bash case语句

文章图片
例子2
在此示例中,我们定义了一个组合方案,其中还存在一个默认情况,即找不到以前匹配的大小写。
Bash脚本
#!/bin/bashecho "Which Operating System are you using?" echo "Windows, Android, Chrome, Linux, Others?" read -p "Type your OS Name:" OScase $OS in Windows|windows) echo "That's common. You should try something new." echo ; ; Android|android) echo "This is my favorite. It has lots of applications." echo ; ; Chrome|chrome) echo "Cool!!! It's for pro users. Amazing Choice." echo ; ; Linux|linux) echo "You might be serious about security!!" echo ; ; *) echo "Sounds interesting. I will try that." echo ; ; esac

输出量
我们使用三个不同的输入运行了脚本,请检查以下输出:
bash case语句

文章图片
结论【bash case语句】在本主题中,我们通过示例了解了Bash Case语句的语法和用法。

    推荐阅读