语法
case 值 in
匹配模式1)
命令1
命令2
……
;;
匹配模式2)
命令1
命令2
……
;;
*) // * 正则表达式进行任意字符的匹配
命令1
命令2
……
;;
esac
每一匹配模式必须以右括号结束。取值可以为变量或者常数。匹配值发现取值符合某一模式后,期间所有命令直到 ;; (类似其他语言break)结束该模式。一旦模式匹配则执行完匹配模式相应命令后不在继续其他模式。如果无一匹配模式,则使用星号* 捕获该值,在执行后面命令(类似默认置)
case、in和esac 都是shell关键字,easc就是case的反写代表结束case
简单的正则表达式支持如下通配符
格式 | 说明 |
* | 表示任意字符 |
[abc] | 表示a、b、c三个字符中的任意一个 |
[m-n] | 表示从m到n的任意一个字符 |
| | 表示多重选择,类似于逻辑运算中的或运算。比如,abc | xyz表示匹配字符串"abc"或者"xyz" |
演示
read -p "输入1-7中的某个数字:" num
case $num in
1)
echo "星期一"
;;
2)
echo "星期二"
;;
3)
echo "星期三"
;;
4)
echo "星期四"
;;
5)
echo "星期五"
;;
6)
echo "星期六"
;;
7)
echo "星期天"
;;
*)
echo "input error"
;;
esac