类似于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"))'
答案 0 :(得分:1)
在此代码中:
function greet {
echo "Hello, $1"
}
# Does not work
VAR=$(greet("John Doe"))
错误是括号传递参数。 尝试这样做:
function greet {
echo "Hello, $1"
}
# works
VAR=$(greet "John Doe")
应该可以。
说明:当您使用$和圆括号时,必须像在shell中那样在圆括号命令中编写内容,以便参数传递时不带圆括号。
答案 1 :(得分:0)
最近,我显然一直在写很多Java代码。调用该函数时,请删除括号,然后一切正常:
function greet {
echo "Hello, $1"
}
VAR=$(greet "John Doe")