Bash: Übergabevariable als einzelner Parameter / Shell-Anführungszeichenparameter
Ich schreibe ein Bash-Skript, das eine Variable an ein anderes Programm übergeben muss:
./program $variable
Das Problem ist, dass $ variable unbedingt als einzelner Parameter übergeben werden muss, was bei Leerzeichen nicht der Fall ist.
variable=Hello World
./program $variable
-> program receives two arguments: 'Hello' 'World'
Zitieren macht gar nichts (gut gemacht, bash devs):
variable=Hello World
./program "$variable"
-> program receives: 'Hello' 'World'
Doppelte Anführungszeichen machen verrückte Sachen (gut gemacht, bash devs):
variable=Hello World
./program "'$variable'"
-> program receives: "'Hello" "World'"
Gibt es eine einfache Möglichkeit, dies zu tun? Mist, gibt es eine Möglichkeit, dies überhaupt zu tun?
Aktualisieren: Okay, da das Problem nicht so heftig zu sein scheint, gibt es hier einige zusätzliche Informationen. Das Programm, an das ich Argumente übergebe, ist ein Python-Skript. Ohne die Argumente in irgendeiner Weise zu ändern, bekomme ich
print sys.argv
-> ['/usr/bin/program', "'Hello", "World'"]
Wie kann ich das beheben?
Bearbeiten: Nein, ich habe es nicht versucht
variable="Hello World"
weil ich niemals $ variable deklariere. Es wird nicht in meiner Bash-Funktion deklariert und ich darf es nicht ändern.
Bearbeiten: Okay, ich habe es so funktionieren lassen.
local temp="$variable"
./program "$temp"
Ich würde gerne wissen, warum das so funktioniert und nicht anders.