繁体   English   中英

在 bash 函数名称末尾使用加号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM