如何使用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中一样在括号命令中写入括号,以便在不使用括号的情况下传递参数。

谢谢。我已经在这里记录了这一点(在写问题的同时):-)为什么我要对它进行投票,而它大部分都是重复我以前写的答案?我在写问题时发现了问题的答案,但决定用问答的方式写下答案。谢谢你的回复,但是你的回答没有比我的回答多出多少。哦,对不起,我在手机上没有看到你的回答。我很高兴。我现在将善意地投票表决你的答案。:)圣诞快乐!