我需要创建一个名称以+
结尾的bash函数。例如foo+
。这些工作:
+foo() { true; }
foo+bar() { true; }
但这不是:
foo+() { true; }
-bash: syntax error near unexpected token `}'
为什么不呢?它没有抱怨+
。有办法解决这个问题吗?
答案 0 :(得分:1)
这是因为+()
是一个extglob(启用时),因此bash看到someglob { true; }
无效。
这里有没有extglob的工作:
$ shopt -u extglob
$ foo+() { echo bar; }
在这里打破了extglob:
$ shopt -s extglob
$ foo+() { echo bar; }
bash: syntax error near unexpected token `}'
变通办法包括在()
之前添加空格或使用function
关键字:
foo+ () { echo bar; }
function foo+() { echo bar; }