我想要它,所以a和A或b和B将调用一个函数 任何人都知道如何做到这一点
read menu_answer
case $menu_answer in
A)optionA;;
B)optionB;;
*)echo "oops";;
esac
答案 0 :(得分:0)
shell中case
的语法是(来自bash手册页)
<[(] 模式 [| 模式] ...)列表中的案例字 ;; ] ... esac
使用与Pathname Expansion
相同的规则将每个模式与 word 的扩展匹配。
但关键细节是
[| 模式]
位表示您可以在由管道分隔的同一匹配中列出多个模式。
因此,为了匹配您的a
和A
,您可以使用a|A)
和b|B)
。
如果您更希望忽略匹配的情况,则为此目的存在nocasematch
选项(再次从手册页)
如果启用了shell选项nocasematch,则执行匹配而不考虑字母字符的情况。
答案 1 :(得分:0)
至少有两种选择:
case $menu_answer in
[Aa]) optionA ;;
B|b) optionB ;;
*) echo Oops ;;
esac
您还可以考虑使用case
作为菜单,而不是select
。