0

書いているスクリプトに少し問題があります...2つの関数があるとしましょう:

function foo1 {
    while [ $# -gt 0 ]; do
        echo $1
        shift
    done
}

function foo2 {
    foo1 $@
}

私の問題は次のとおりです。私がfoo1 -o "file with space.txt"出力する場合は

-o
file with space.txt

しかし、foo2 -o "file with space.txt"またはfoo2 -o file\ with\ space.txtで、私は得る

-o
file
with
space.txt

foo1がfoo2から「filewithspace.txt」を受け取る方法はありますか?

4

1 に答える 1

5

関数foo2で、二重引用符を使用します。

foo1 "$@"

詳細man bashについては、以下を参照してください。

展開が二重引用符で囲まれている場合、各パラメーターは個別の単語に展開されます。つまり、「$@」は「$1」「$2」と同等です。

于 2012-09-04T09:23:38.273 に答える