我如何使用bash将带有参数*的函数输出分配给变量?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何使用bash将带有参数*的函数输出分配给变量?相关的知识,希望对你有一定的参考价值。

类似于How can I assign the output of a function to a variable using bash?,但略有不同。

如果我有这样的功能:

function scan 
  echo "output"

...我可以轻松地将其分配给这样的变量:

VAR=$(scan)

现在,如果我的函数采用一个或多个参数,该如何使用“ shell扩展”语法将它们传递给函数呢?例如。这个:

function greet 
  echo "Hello, $1"


# Does not work
VAR=$(greet("John Doe"))

上面的bash(版本5.0.3(1)-release)产生了这样的错误:

$ ./foo.sh 
./foo.sh: command substitution: line 8: syntax error near unexpected token `"John Doe"'
./foo.sh: command substitution: line 8: `greet("John Doe"))'
答案

最近,我显然在写很多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"


# Does not work
VAR=$(greet "John Doe")

它应该起作用。

说明:当您使用$和圆括号时,必须像在shell中那样在圆括号命令中编写内容,以便传递参数时不带圆括号。

以上是关于我如何使用bash将带有参数*的函数输出分配给变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串列分配给变量并在 Bash 脚本的输出中引用它

将输出分配给Bash中的变量[重复]

如何使用多个输出参数执行存储过程?

如何将curl的输出捕获到bash中的变量[重复]

输出:函数与分配给变量的函数

bash 用带空格的参数分配变量