Jak przekazać parametry wiersza poleceń z cudzysłowami przechowywanymi w pojedynczej zmiennej?

Chcę wywołać aplikację zewnętrzną ze skryptu powłoki, ale ten skrypt powłoki pobiera parametry (z innego skryptu) w jednej zmiennej. Wszystko było w porządku, dopóki nie musiałem używać podwójnych cudzysłowów dla pojedynczego parametru, ale słów oddzielonych spacją.

Oto uproszczony przykład mojego problemu (sh_param po prostu drukuje wszystkie przekazane parametry):

<code>#!/bin/sh

pass() {
    echo "Result with \$@"
    ./sh_param $@
    echo "Result with \"\$@\""
    ./sh_param "$@"
    echo "Result with \$*"
    ./sh_param $*
    echo "Result with \"\$*\""
    ./sh_param "$*"
}

pass '"single param" separate params'
</code>

i wyniki (sh_param po prostu drukuje wszystkie przekazane parametry):

<code>Result with $@
Param: "single
Param: param"
Param: separate
Param: params
Result with "$@"
Param: "single param" separate params
Result with $*
Param: "single
Param: param"
Param: separate
Param: params
Result with "$*"
Param: "single param" separate params
</code>

I chcę:

<code>Param: single param
Param: separate
Param: params
</code>

questionAnswers(5)

yourAnswerToTheQuestion