如何使用bash将带有参数的函数*的输出分配给变量?
类似于,但略有不同 如果我有这样一个函数:如何使用bash将带有参数的函数*的输出分配给变量?,bash,shell,Bash,Shell,类似于,但略有不同 如果我有这样一个函数: function scan { echo "output" } VAR=$(scan) …我可以轻松地将其分配给如下变量: function scan { echo "output" } VAR=$(scan) 现在,如果我的函数接受一个或多个参数,如何使用“shell扩展”语法将它们传递给函数?例如,这: function greet { echo "Hello, $1" } # Does not work VAR=$(gree
function scan {
echo "output"
}
VAR=$(scan)
…我可以轻松地将其分配给如下变量:
function scan {
echo "output"
}
VAR=$(scan)
现在,如果我的函数接受一个或多个参数,如何使用“shell扩展”语法将它们传递给函数?例如,这:
function greet {
echo "Hello, $1"
}
# Does not work
VAR=$(greet("John Doe"))
上面使用my bash(版本5.0.3(1)-发行版
)会产生类似的错误:
显然,我最近一直在写很多Java代码。调用函数时去掉括号,一切都会正常工作:
function greet {
echo "Hello, $1"
}
VAR=$(greet "John Doe")
在此代码中:
function greet {
echo "Hello, $1"
}
# Does not work
VAR=$(greet("John Doe"))
错误是传递参数的括号。
尝试这样做:
function greet {
echo "Hello, $1"
}
# works
VAR=$(greet "John Doe")
它应该会起作用
说明:使用$an命令时,必须像在shell中一样在括号命令中写入括号,以便在不使用括号的情况下传递参数。谢谢。我已经在这里记录了这一点(在写问题的同时):-)为什么我要对它进行投票,而它大部分都是重复我以前写的答案?我在写问题时发现了问题的答案,但决定用问答的方式写下答案。谢谢你的回复,但是你的回答没有比我的回答多出多少。哦,对不起,我在手机上没有看到你的回答。我很高兴。我现在将善意地投票表决你的答案。:)圣诞快乐!