Linux Shell流程控制case…esac

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 语句中的模式匹配是按照顺序依次进行的,如果某个模式匹配成功,就会执行对应的命令,而不会继续往下匹配。因此,如果多个模式存在重叠的部分,需要将包含范围更广的模式放在前面。