为什么test foo bar
的输出仅为foo
而不是foo bar
?
$ cat test
function f
{
local args=$1
echo $args
}
f "$@"
$ bash test foo bar
foo
答案 0 :(得分:2)
要将命令行参数作为单个参数传递给您的函数,您可以使用"$*"
(而不是$@
)将它们连接在一起:
f "$*"
变量IFS
的第一个字符用作每个参数之间的“粘合剂”,默认为单个空格。
答案 1 :(得分:1)
因为酒吧是2美元。如果你想将foo和bar都作为单个参数传递,你必须这样调用它:
bash test“foo bar”