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

时间:2017-09-29 15:58:24

标签: linux bash syntax

我需要创建一个名称以+结尾的bash函数。例如foo+。这些工作:

+foo() { true; }
foo+bar() { true; }

但这不是:

foo+() { true; }
-bash: syntax error near unexpected token `}'

为什么不呢?它没有抱怨+。有办法解决这个问题吗?

1 个答案:

答案 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; }