case … esac 是 Shell 编程中的一种流程控制语句,用于对一个变量的值进行多重判断。
其基本语法格式如下:
case 变量 in
模式1)
命令1
;;
模式2)
命令2
;;
...
esac
在 case 语句中,可以针对一个变量使用多个不同的模式,如果变量的值与某个模式匹配,则执行对应的命令。每个模式后面需要加上两个分号 ;;,用于表示该分支执行结束。
下面是一个例子,该脚本根据用户输入的月份,输出对应的季节:
#!/bin/bash
echo -n "请输入月份(1-12):"
read month
case $month in
1|2|12)
echo "冬季"
;;
3|4|5)
echo "春季"
;;
6|7|8)
echo "夏季"
;;
9|10|11)
echo "秋季"
;;
*)
echo "请输入有效的月份!"
;;
esac
在这个例子中,我们先读入用户输入的月份,然后使用 case 语句进行匹配。每个模式中,我们使用 | 分隔符来指定多个匹配值。当用户输入的值不属于任何一个模式时,执行最后一个分支的命令。
需要注意的是,case 语句中的模式匹配是按照顺序依次进行的,如果某个模式匹配成功,就会执行对应的命令,而不会继续往下匹配。因此,如果多个模式存在重叠的部分,需要将包含范围更广的模式放在前面。