此代码在 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
到脚本的开头。
希望这对将来的其他人有帮助。
关于使用扩展模式匹配的 bash case 语句语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59533799/