流程控制之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启动脚本