【发布时间】:2015-06-08 15:06:51
【问题描述】:
各种语言的函数定义语法为:
C(所有脚本语言的教父):
func_type myfunc_c (arg_type arg_name , ...)
{
/* arguments explicitly specified */
}
TCL:
proc myfunc_tcl {arg1 arg2 args} {
# arguments explicitly specified
}
Perl:
sub myfunc_perl {
# no arguments explicitly specified && no round brackets used
}
Python:
def myfunc_python(arg1, arg2):
# arguments explicitly specified
重击:
function myfunc_bash () {
# arguments NEVER explicitly specified
# WHY using round brackets?
}
为什么在 bash 中使用圆括号?
【问题讨论】:
-
你对 C 语言的描述会让很多人感到不安.. :)
-
它在哪里说你必须在 bash 中有括号? Bash HOWTO doesn't use them..
-
@Pynchia:我添加了 [c] 标签来抵消反对票! :) 我不会放弃我的信仰!! :D Martijn Pieters && ThisSuitIsBlackNot:感谢您提供宝贵的信息,伙计们!
-
Posix shell 需要 () 但 bash 允许使用
function关键字。两者都不需要 {}。 (主体需要是一个复合命令。试试这个,例如:f() for a; do echo Argument "$a"; done -
如果您问为什么 POSIX 标准需要它们而 Bash 不需要它们,尤其是当它们似乎没有功能时,这可能会更好。它们与函数一起出现在 1980 年代的 Bourne shell 中,但我一直无法为它们找到任何理由。
标签: bash