Bash case
Bash 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' 关键字。 case 语句由 'esac' 关键字结束。
我们可以应用多个由 | 分隔的模式操作员。 ) 运算符表示模式列表的终止。
包含语句的模式称为子句,它必须以双分号(;;) 结尾。
星号(*) 用作定义默认情况的最终模式。当用作最后一种情况时,它用作默认情况。
它是如何工作的
首先,case 语句扩展表达式并尝试匹配每个包含的模式。当它找到匹配项时,将执行所有链接的语句,直到出现双分号(;;)。第一次匹配后,case 以最后执行的语句的退出状态终止。
如果没有匹配的模式,则 case 的退出状态为零。否则,返回状态为已执行语句的退出状态。
如果使用默认星号模式,则在没有匹配模式的情况下执行。
让我们尝试借助几个例子来理解这个机制:
例子1
在这个例子中,我们定义了一个简单的场景来演示case语句的使用.
Bash 脚本
#!/bin/bash
echo "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 lidihuo."
;;
esac
输出
示例 2
在此示例中,我们定义了一个组合场景,其中还有一个默认情况,即未找到先前匹配的案例。
Bash 脚本
#!/bin/bash
echo "Which Operating System are you using?"
echo "Windows, Android, Chrome, Linux, Others?"
read-p "Type your OS Name:" OS
case $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 语句的语法和用法。