【问题标题】:composite patterns inside bash case statementsbash case 语句中的复合模式
【发布时间】:2011-11-01 11:28:34
【问题描述】:

我无法获得 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 `('

知道有什么问题吗?

【问题讨论】:

    标签: bash


    【解决方案1】:

    尝试像这样打开extglob shell 选项:

    shopt -s extglob
    

    然后你可以使用扩展的模式匹配操作符:

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

    来自手册页:

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

    【讨论】:

    • 像魅力一样工作,谢谢!从一开始就在我眼前……
    猜你喜欢
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 2012-03-22
    • 2020-04-19
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多