Bash case语句
case 语句通常用于简化具有多种不同选择的复杂条件语句,使 Bash 脚本更具可读性,并更易于维护。
基础
语法:
case expression in
pattern_1)
statements
;;
pattern_2)
statements
;;
pattern_3|pattern_4|pattern_5)
statements
;;
pattern-n)
statements
;;
*)
statements
;;
esac
注:
- 可以运用|
分隔的多个模式运算符,运算符指示模式列表的终止。
-pattern) statements
这样的模式语句被称为子句,须以;;
终止。
-*
用于定义默认情况下的最终模式。当用作最后一种匹配模式时,它作为默认匹配。
运作规则:
- case 语句扩展表达式并尝试与每个包含的模式进行匹配。若找到匹配项,将执行与该项连接的语句直至
;;
结束。 - 若匹配项成功,
case
以最后执行的语句的退出状态终止。 - 若匹配项失败,
case
的退出状态为零。 - 若写入了默认的
*
模式,那么在匹配其他项失败后将执行它。
示例:
#!/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|window|win)
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
执行后得到以下结果:
which Operating System are you using?
Windows, Android, Chrome, Linux, Others?
Type your OS Name:linux
You might be serious about security!!