使用扩展模式匹配的 bash case 语句语法错误

标签 bash switch-statement pattern-matching syntax-error

此代码在 GNU bash 版本 5.0.7(1)-release (x86_64-redhat-linux-gnu) 上运行:

var="r=x"
case "$var" in
        r=?(x|xy|xyz))
                echo "suchess"
                ;;
esac

正在生成此错误:

bash: test.sh: line 3: syntax error near unexpected token `('
bash: test.sh: line 3: `        r=?(x|xy|xyz))'

我一生都无法弄清楚为什么...发现经过测试的代码 here并且它有效。

最佳答案

啊啊。所以这很尴尬。我几乎在发布这篇文章的同时就找到了答案。答案在我的问题的链接中。我需要添加:

shopt -s extglob

到脚本的开头。

希望这对将来的其他人有帮助。

在这里找到答案:How to use patterns in a case statement?

关于使用扩展模式匹配的 bash case 语句语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59533799/

相关文章:

bash - 使用括号对表达式进行分组以防万一

java - 如何消除 switch case 或 if-else ?并执行以下操作?

c++ - 检测多字节字符编码

java - 使用 ChoiceFormat 模式显示报价

linux - GNU screen - 仅在程序运行后执行另一个命令

linux - 退出在 SSH 脚本的内部函数中不起作用

Javascript - Nodejs 切换全局变量未更改

string - 各种位串的模式搜索

linux - 在 Bash 中处理目录名称中的空格

node.js - 强制 Node 在 Windows 上使用 git bash