#!/bin/bash
printf "Input integer number: "
read num
case $num in
1)
echo "Monday"
;;
2)
echo "Tuesday"
;;
3)
echo "Wednesday"
;;
4)
echo "Thursday"
;;
5)
echo "Friday"
;;
6)
echo "Saturday"
;;
7)
echo "Sunday"
;;
*)
echo "error"
esac
输出:
Input integer number:3↙
Wednesday
case expression in
pattern1)
statement1
;;
pattern2)
statement2
;;
pattern3)
statement3
;;
……
*)
statementn
esac
case
,in
,esac
是关键字,expression
表示表达式,pattern
表示匹配模式。
;;
才停止;然后整个 case 语句就执行完了,程序会跳出整个 case 语句,执行esac
后面的其它语句。*)
后面的语句(*表示其它所有值),直到遇见双分号;;
或者esac
才结束。*)
相当于多个 if 分支语句中最后的 else 部分。这里的;;和*)就相当于其Java中的 break 和 default。
*)
的几点说明:*)
用来“托底”,万一 expression 没有匹配到任何一个模式,*)
部分可以做一些“善后”工作,或者给用户一些提示。*)
部分。如果 expression 没有匹配到任何一个模式,那么就不执行任何操作。除最后一个分支外(这个分支可以是普通分支,也可以是*)
分支),其它的每个分支都必须以;;
结尾,;;
代表一个分支的结束,不写的话会有语法错误。最后一个分支可以写;;
,也可以不写,因为无论如何,执行到 esac
都会结束整个 case in 语句。