Min*_*int 37 linux bash function parentheses
我总是想知道他们用的是什么?如果你永远不会把任何东西放在里面,似乎很难把它们放进去.
function_name () {
#statements
}
Run Code Online (Sandbox Code Playgroud)
将function关键字放在函数的开头还有什么可以获得/失去的吗?
function function_name () {
#statements
}
Run Code Online (Sandbox Code Playgroud)
Sie*_*geX 49
该关键字function已被弃用,有利于POSIX规范的function_name()可移植性
函数是用户定义的名称,用作使用新位置参数调用复合命令的简单命令.使用"函数定义命令"定义函数.
函数定义命令的格式如下:
Run Code Online (Sandbox Code Playgroud)fname() compound-command[io-redirect ...]
请注意,这{ }不是必需的,所以如果你不打算使用关键字function(你不应该),那么这()是必要的,因此解析器知道你正在定义一个函数.
例如,这是一个合法的函数定义和调用:
$ myfunc() for arg; do echo "$arg"; done; myfunc foo bar
foo
bar
Run Code Online (Sandbox Code Playgroud)
Gre*_*ill 10
第一个示例中需要空括号,以便bash知道它是函数定义(否则它看起来像普通命令).在第二个示例中,()因为您已经使用过,所以它是可选的function.
如果没有function,别名扩展发生在定义时。例如:
alias a=b
# Gets expanded to "b() { echo c; }" :
a() { echo c; }
b
# => c
# Gets expanded to b:
a
# => c
Run Code Online (Sandbox Code Playgroud)
随着function然而,别名扩展不会在定义时发生,因此别名“隐藏”的定义:
alias a=b
function a { echo c; }
b
# => command not found
# Gets expanded to b:
a
# => command not found
unalias a
a
# => c
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9557 次 |
| 最近记录: |