用parens声明的bash函数之间的区别

时间:2018-03-03 22:35:35

标签: bash shell

在这样声明的bash函数之间是否存在任何行为差异:

function ql_release_lock () {}

和没有parens声明的bash函数:

function ql_release_lock {}

通过行为差异,我想我的意思是我们应该注意的任何差异。

1 个答案:

答案 0 :(得分:3)

解析命令行后没有任何区别。结果函数是相同的。

定义shell函数的唯一可移植语法省略了function关键字,这是一个基础:

q1_release_lock() { … }

注意:从技术上讲,函数定义的语法是:

fname "(" ")" compound-command 

fname "(" ")" compound-command redirection-list

复合命令可以是{ … }( … )的分组,也可以是forwhilecase,{ {1}},ifcase声明。我怀疑利用这个事实是否是一个好主意,可能除了select,这表明函数的主体应该在子shell中运行。

在任何情况下,您都可以通过使用fname () ( body )转储函数定义来观察bash使用fname () { … }作为规范语法。