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>