为什么test foo bar
的输出仅foo
而不是foo bar
?
$ cat test
function f
{
local args=$1
echo $args
}
f "$@"
$ bash test foo bar
foo
将命令行参数作为单个参数传递给您的函数,您可以使用"$*"
(而不是$@
)加入它们:
f "$*"
可变 IFS
的第一个字符用作每个参数之间的"胶",默认值是一个空间。
因为bar为$ 2。如果您希望通过单个参数传递foo和bar,则必须这样称呼:
bash测试" foo bar"