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:
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:
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...
Code:
/bin/myprog -x "$command"
Code:
escaped=`echo -n "$command" | sed 's,[^-0-9a-zA-Z,./_],\\&,g'`
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...