bash case语句中的复合模式

时间:2011-11-01 11:28:35

标签: bash

我无法获得http://www.gnu.org/software/bash/manual/bashref.html#Pattern-Matching中描述的复合模式以匹配我的case语句:

i=33; case $i in *([A-Za-z0-9]) ) echo "alphanumeric";; * ) echo "bah";; esac;

我希望上面的脚本显示“字母数字”,但它失败了:

bash: syntax error near unexpected token `('

知道出了什么问题吗?

1 个答案:

答案 0 :(得分:4)

尝试启用extglob shell选项,如下所示:

shopt -s extglob

然后您可以使用扩展模式匹配运算符:

i='33'; case $i in *([A-Za-z0-9]) ) echo "alphanumeric";; * ) echo "bah";; esac;

从手册页:

  

\ textglob - 如果设置,则启用上面描述的路径名扩展下的扩展模式匹配功能。