0

为什么输出是test foo baronlyfoo而不是foo bar

$ cat test
function f
{
    local args=$1

    echo $args
}
f "$@"

$ bash test foo bar
foo
4

2 回答 2

2

要将命令行参数作为单个参数传递给您的函数,您可以使用"$*"(而不是$@)将它们连接在一起:

f "$*"

变量的第一个字符IFS用作每个参数之间的“胶水”,默认为单个空格。

于 2012-11-05T12:35:04.687 回答
1

因为酒吧是 2 美元。如果您希望将 foo 和 bar 作为单个参数传递,则必须这样调用它:

bash 测试“富吧”

于 2012-11-05T12:35:01.893 回答