📅  最后修改于: 2020-12-29 06:07:40             🧑  作者: Mango
在本主题中,我们将讨论case语句的基础以及如何在Bash脚本中使用它们。
Bash case语句是具有许多ELIF元素的IF-THEN-ELSE的最简单形式。使用case语句使我们的bash脚本更具可读性,更易于维护。这些通常用于简化具有多种不同选择的复杂条件。
Bash case语句遵循与Javascript或C switch语句类似的逻辑。略有不同,如下所示:
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语句有一些要点:
首先,case语句扩展表达式并尝试与每个包含的模式匹配。当找到匹配项时,将执行所有链接的语句,直到双分号(;;)为止。在第一个匹配项之后,case以最后执行的语句的退出状态终止。
如果没有匹配的模式,则案例的退出状态为零。否则,返回状态是已执行语句的退出状态。
如果使用默认的星号模式,则在没有匹配模式的情况下将执行它。
让我们尝试通过一些示例来了解这种机制:
在此示例中,我们定义了一个简单的场景来演示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 javatpoint."
;;
esac
输出量
在此示例中,我们定义了一个组合方案,其中还存在一个默认情况,即找不到先前匹配的大小写。
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
输出量
我们使用三个不同的输入运行了脚本,请检查以下输出: