shell脚本,乘以大小写来调用一个fxn

时间:2014-11-24 21:48:50

标签: bash shell

我想要它,所以a和A或b和B将调用一个函数 任何人都知道如何做到这一点

read menu_answer
case $menu_answer in 
A)optionA;;
B)optionB;;
*)echo "oops";;
esac

2 个答案:

答案 0 :(得分:0)

shell中case的语法是(来自bash手册页)

  <[(] 模式 [| 模式] ...)列表中的

案例 ;; ] ... esac

使用与Pathname Expansion相同的规则将每个模式 word 的扩展匹配。

但关键细节是

  

[| 模式]

位表示您可以在由管道分隔的同一匹配中列出多个模式。

因此,为了匹配您的aA,您可以使用a|A)b|B)

如果您更希望忽略匹配的情况,则为此目的存在nocasematch选项(再次从手册页)

  

如果启用了shell选项nocasematch,则执行匹配而不考虑字母字符的情况。

答案 1 :(得分:0)

至少有两种选择:

case $menu_answer in
    [Aa]) optionA ;;
    B|b) optionB ;;
    *) echo Oops ;;
esac

您还可以考虑使用case作为菜单,而不是select