用空格传递参数

时间:2012-11-05 12:33:22

标签: bash

为什么test foo bar的输出仅为foo而不是foo bar

$ cat test
function f
{
    local args=$1

    echo $args
}
f "$@"

$ bash test foo bar
foo

2 个答案:

答案 0 :(得分:2)

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

f "$*"

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

答案 1 :(得分:1)

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

bash test“foo bar”