流程控制之case语句
一 语法
case 变量 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
模式3)
命令序列3
;;
*)
无匹配后命令序列
esac
注意
case语句只支持shell通配符,例如:*表示任意字符串,?表示任意字符,中括号表示字符集如[a-z]表示一个小写字母
如果要处理正则表达式则需要使用用if [[ 字符串 =~ "正则" ]]这种形式
二 案例
案例1
#!/bin/bash
read -p "username: " -t 5 username
echo
if [ -z $username ];then
username="default"
fi
case $username in
root)
echo "管理员用户"
;;
egon)
echo "普通用户"
;;
default)
echo "默认用户"
;;
*)
echo "其他用户"
esac
案例2:
#!/bin/bash
read -p ">>>: " BOOLEAN
case $BOOLEAN in
[yY][eE][sS])
echo 'Thanks' $BOOLEAN
;;
[yY]|[nN])
echo 'Thanks' $BOOLEAN
;;
'T'|'F')
echo 'Thanks' $BOOLEAN
;;
[Tt]ure|[Ff]alse)
echo 'Thanks' $BOOLEAN
;;
*)
exit 1
;;
esac
案例3:编写nginx启动脚本