Wie werden Befehlszeilenparameter mit Anführungszeichen übergeben, die in einer einzelnen Variablen gespeichert sind?

Ich möchte eine externe Anwendung aus einem Shell-Skript aufrufen, aber dieses Shell-Skript ruft Parameter (aus einem anderen Skript) in einer einzelnen Variablen ab. Alles war in Ordnung, bis ich keine doppelten Anführungszeichen für einzelne Parameter, sondern durch Leerzeichen getrennte Wörter verwenden musste.

Hier ist ein vereinfachtes Beispiel für mein Problem (sh_param gibt nur alle übergebenen Parameter aus):

<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>

und Ergebnisse (sh_param gibt nur alle übergebenen Parameter aus):

<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>

Und ich will:

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

Antworten auf die Frage(5)

Ihre Antwort auf die Frage