跳至主要內容

Shell Script中的case语句判断

酷丁大约 2 分钟shelllinuxcase判断对话式脚本case

case语句

case语句是一种多分支选择结构,它可以用来匹配一个值与一个模式,如果匹配成功,就执行相应的命令。case语句的一般格式如下:

casein
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
*)
    command1
    command2
    ...
    commandN
    ;;
esac

其中,command是命令,;;是分隔符,*是通配符,esaccase的反写。

不妨举个例子看下case语句的用法:

#!/bin/bash
case $1 in
"hello")
    echo "Hello, how are you?"
    ;;
"")
    echo "You MUST input parameters, ex> {$0 someword}"
    ;;
*)  
    echo "Usage $0 {hello}"
    ;;
esac

这个例子中,我们使用case语句来判断用户输入的参数,如果输入的是hello,则输出Hello, how are you?,如果输入的是空,则输出You MUST input parameters, ex> {$0 someword},如果输入的是其他的,则输出Usage $0 {hello}

这个例子貌似没有体现case语句的优势,但是如果我们需要判断的条件很多,那么使用case语句就会比较方便,例如:

#!/bin/bash

echo "This program will print your selection !"
case $1 in
"one")
    echo "Your choice is ONE"
    ;;
"two")
    echo "Your choice is TWO"
    ;;
"three")
    echo "Your choice is THREE"
    ;;
*)  
    echo "Usage $0 {one|two|three}"
    ;;
esac

这个例子中,我们使用case语句来判断用户输入的参数,如果输入的是one,则输出Your choice is ONE,如果输入的是two,则输出Your choice is TWO,如果输入的是three,则输出Your choice is THREE,如果输入的是其他的,则输出Usage $0 {one|two|three}

下面是一个根据分数判断等级的例子:

#!/bin/bash
read -p "请输入分数:" grade
case $grade in
100|99|98|97|96|95|94|93|92|91|90)
    echo "A"
    ;;
89|88|87|86|85|84|83|82|81|80)
    echo "B"
    ;;
79|78|77|76|75|74|73|72|71|70)
    echo "C"
    ;;
69|68|67|66|65|64|63|62|61|60)
    echo "D"
    ;;
*)
    echo "E"
    ;;
esac

参考资料

鸟哥的Linux私房菜open in new window
部分内容由Github Copilot辅助编写