我无法获得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 `('
知道出了什么问题吗?
答案 0 :(得分:4)
尝试启用extglob
shell选项,如下所示:
shopt -s extglob
然后您可以使用扩展模式匹配运算符:
i='33'; case $i in *([A-Za-z0-9]) ) echo "alphanumeric";; * ) echo "bah";; esac;
从手册页:
\ textglob - 如果设置,则启用上面描述的路径名扩展下的扩展模式匹配功能。