0

の代わりにtest foo baronlyの出力が表示されるのはなぜですか?foofoo bar

$ cat test
function f
{
    local args=$1

    echo $args
}
f "$@"

$ bash test foo bar
foo
4

2 に答える 2

2

"$*"コマンドライン パラメーターを単一の引数として関数に渡すには、 ( の代わりに$@)を使用してそれらを結合できます。

f "$*"

variable の最初の文字はIFS、各パラメーター間の「接着剤」として使用されます。デフォルトは単一のスペースです。

于 2012-11-05T12:35:04.687 に答える
1

バーは$2だからです。foo と bar の両方を単一のパラメーターとして渡したい場合は、次のように呼び出す必要があります。

バッシュテスト「フーバー」

于 2012-11-05T12:35:01.893 に答える