我注意到有三种定义 shell 函数的方法,但我从未在任何地方看到它的解释。
# Option 1
function log(){
}
# Option 2
log(){
}
# Option 3, added due to answers
function log{
}
这三个定义之间有什么不同吗?它们的行为是否不同,还是只是外观不同?
有没有应该使用的标准?我希望第一个选项更可取,因为我想它会消除某处的歧义。
提前致谢!
回答后编辑:投票关闭的人都是“基于意见”;我问的是行为上的差异,而不仅仅是为什么人们认为我应该使用哪个。一个主要区别在于只有 Bash 支持一个,这意味着每个人都应该致力于使用第二个选项。
最佳答案
log()
受 Bourne Shell 家族和任何类型的派生物(破折号、破折号)支持 是 POSIX std 语法,可能是您想用来编写与旧系统兼容的东西的语法。可能是您要使用的那个。
function log () { ...; }
被 bash 和 zsh 支持,但是同时使用 function
和 ()
是错误的,应该避免。
function log { ...; }
是 Korn Shell 语法,出于兼容性原因被 bash 和 zsh 支持,但不是 POSIX
引自 http://wiki.bash-hackers.org/scripting/obsolete关于“函数log()”
这是 Korn 和 POSIX 风格函数定义的合并——同时使用函数关键字和括号。它没有有用的目的,也没有历史依据或存在的理由。它不是由 POSIX 指定的。它被 Bash、mksh、zsh 和其他一些 Korn shell 所接受,在这些 shell 中它被视为与 POSIX 风格的函数相同。 AT&T ksh 不接受它。它不应该被使用。有关 function 关键字,请参见下表。 Bash 没有将此功能记录为明确弃用。
关于bash - 我应该将 shell 函数定义为函数 x( ) 还是仅定义为 x( )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22238033/