在这样声明的bash函数之间是否存在任何行为差异:
function ql_release_lock () {}
和没有parens声明的bash函数:
function ql_release_lock {}
通过行为差异,我想我的意思是我们应该注意的任何差异。
答案 0 :(得分:3)
解析命令行后没有任何区别。结果函数是相同的。
定义shell函数的唯一可移植语法省略了function
关键字,这是一个基础:
q1_release_lock() { … }
注意:从技术上讲,函数定义的语法是:
fname "(" ")" compound-command
或
fname "(" ")" compound-command redirection-list
复合命令可以是{ … }
或( … )
的分组,也可以是for
,while
,case
,{ {1}},if
或case
声明。我怀疑利用这个事实是否是一个好主意,可能除了select
,这表明函数的主体应该在子shell中运行。
在任何情况下,您都可以通过使用fname () ( body )
转储函数定义来观察bash使用fname () { … }
作为规范语法。