gpt4 book ai didi

shell - 为什么 shell 不需要函数签名中的形式参数?

转载 作者:行者123 更新时间:2023-12-04 02:52:32 29 4
gpt4 key购买 nike

为什么 shell 函数不需要参数?下面的加法函数示例将 num1 和 num2 相加。我的意思是你不把参数写在行函数addition()的()里面。

addition()
{
echo $(($num1+$num2))
}

最佳答案

如果您的问题是为什么这个函数起作用,它如何获取 num1 和 num2 变量?”,答案是:它从获取这些变量上下文,例如这将回显 hello Jack:

hello() {
echo hello $name
}

name=Jack
hello

您可以像这样重写函数以使用位置参数:

hello() {
echo hello $1
}

hello Jack

根据为什么不在函数声明中写变量名:这就是 bash 的制作方式。从手册页:

Shell Function Definitions
A shell function is an object that is called like a simple command and
executes a compound command with a new set of positional parameters.
Shell functions are declared as follows:

name () compound-command [redirection]
function name [()] compound-command [redirection]
This defines a function named name. The reserved word function
is optional. If the function reserved word is supplied, the
parentheses are optional. The body of the function is the com‐
pound command compound-command (see Compound Commands above).
....

也就是说,函数声明必须是解释形式之一,在不使用function关键字时必须使用()(中间没有变量名),否则是可选的。

关于shell - 为什么 shell 不需要函数签名中的形式参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17394188/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com