[英]Using a plus sign at the end of a bash function name
我需要创建一个名称以+
结尾的 bash 函数。 例如foo+
。 这些工作:
+foo() { true; }
foo+bar() { true; }
但这不会:
foo+() { true; }
-bash: syntax error near unexpected token `}'
为什么不? 它不会抱怨+
。 有没有解决的办法?
发生这种情况是因为+()
是一个 extglob(启用时),所以 bash 看到someglob { true; }
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; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.