Bash 教程-第十七章

17. Bash 中的 Switch (Case) 语句

case 语句很有用,并且比 else-if 阶梯处理得更快。 case 语句不是检查所有 if-else 条件,而是根据输入直接选择要执行的块。

使用 shell 脚本中的 case 语句创建第一个程序。程序从用户那里获取输入并根据输入值执行语句。

单项匹配字符串

#!/bin/bash

read -p "确认你的选择 [yes/no]:" choice

case $choice in
    yes)
         echo "棒"
         echo "你输入的是: Yes"
        ;;
    no)
         echo "哇"
         echo "你输入的是: No"
        ;;
    *)
         echo "抱歉, 输入无效"
        ;;
esac

执行

Bash 教程-第十七章

多项匹配字符串

即答案可能是多个符合,您可以在 shell 脚本中的 case 语句下的匹配模式中定义多个字符串。在此处检查示例脚本:

#!/bin/bash

read -p "确认你的选择 [yes/no]:" choice

case $choice in
    Y|y|Yes|YES|yes)
         echo "棒"
         echo "你输入的是: $choice"
        ;;
    N|n|No|NO|no)
         echo "哇"
         echo "你输入的是: $choice"
        ;;
    *)
         echo "抱歉,输入无效"
        ;;
esac

执行

Bash 教程-第十七章

模糊匹配字符串

#!/bin/bash

read -p "输入一个字符串:" choice
shopt -s extglob
case $choice in
    a*)                    ### 匹配任何以a开头字符串
         echo "匹配任何以a开头字符串";
        ;;

    b?)                    ### 匹配 任 以"b"开头的2个字母的字符
         echo "匹配 任 以"b"开头的2个字母的字符";
        ;;

    s[td])                 ### 匹配 "st"或"sd"
         echo "匹配 'st'或'sd'";
        ;;

    r[ao]m)                ### 匹配 "ram"或"rom"
         echo "匹配 'ram'或'rom'";
        ;;

    me?(e)t)               ### 匹配 "met"或"meet"
         echo "匹配 'met'或'meet'";
        ;;

    @(a|e|i|o|u))          ### 匹配一个元音字母
         echo "匹配一个元音字母";
        ;;

    *)                     ### 未匹配以上所有情况
         echo "未匹配以上所有情况";
        ;; 
esac

执行




Bash 教程-第十七章

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章