Shell 分支 case

case是if多条件的简化写法。

语法

case 变量值 in
值1)
  语句块1
;;
值2)
  语句块2
;;
…
*)
  语句块n
;;
esac

变量值依次与各个值进行匹配,找到匹配项,执行相应语句块,都不匹配,执行*)对应的语句块;

变量值后是in,既可以匹配单个值,也可以匹配集合;

匹配值后的小括号是固定写法;

每个匹配项后用双分号表示结束;

*)类似else含义,表示都不匹配时执行;

esca表示case语句结束。

示例

例1:根据选择的菜单数字,执行相应内容。

menu="请选择菜单:\n\
1 商品管理 \
2 客户管理 \
3 员工管理 \
"
echo $menu
read -p "请选入选项(1-3):" option
 
case $option in
1)
    echo "跳转到商品管理页面"
;;
2)
    echo "跳转到客户管理页面"
;;
3)
    echo "跳转到员工管理页面"
;;
*)
    echo "请输入合法数字(1-3)"
;;
esac

img

例2:判断用户输入字符是否:数字、英文字符、其它字符。

read -p "请选入字符:" option
echo "输入内容是${option}"
case $option in
[0-9])
    echo "输入的是数字"
;;
[a-z]|[A-Z])
    echo "输入的是英文字符"
;;
*)
    echo "其它字符"
;;
esac

img