[Shell/Bash] Parameter übergeben und escapen

BerniG

Lieutenant
Registriert
Okt. 2004
Beiträge
622
Ich habe in einem Shellscript unter Linux eine Variable, die theoretisch alle Zeichen enthalten kann. Diese soll nun an ein Programm übergeben werden. Grundsätzlich hätte ich das jetzt ao gemacht:
Code:
/bin/myprog -x "$command"
Jetzt gibts aber natürlich erheblich Probleme wenn im Kommando ein Anführungszeichen ist. Insbesondere wenn in der Variable eine ungerade Zahl von Anführungszeichen ist bleibt das sogar gewissermaßen hängen. Jetzt könnte man das Ganze schon escapen:
Code:
escaped=`echo -n "$command" | sed 's,[^-0-9a-zA-Z,./_],\\&,g'`
Aber das leidet ja natürlich gewissermaßen unter demselben Problem weil man mittels echo ja genauso einen Shellbefehl ausführt. Weiß jemand wie man das lösen kann?

PS: Wenn ich einfache Anführungszeichen statt doppelten verwende, so besteht grundsätzlich dasselbe Problem nur halt dann wenn eine ungerade Zahl an einfachen Anführungszeichen vorkommt...
 
ne sehr einfache möglichkeit wäre die übergabe der daten als umgebungsvariable.
 
Ich kann in das "myprog" aber leider nicht eingreifen (auch wenn der Name es anders suggeriert). Kann ich das anderweitig mit Umgebungsvariablen machen? Ich hätte versucht, ARGV zu setzen aber das hat wohl keine Auswirkung...

Edit: Hmm...ok. Es funktioniert jetzt plötzlich auch gänzlich ohne Escapen. Das Topic ist damit also wohl gegenstandslos.
 
Zuletzt bearbeitet:

Ähnliche Themen

Antworten
12
Aufrufe
15.403
Zurück
Oben