gutefrage.net, die Ratgeber Community
Login   |  Registrieren   |  Forum |  Richtlinien & FAQ

bash: Escapen in Scripten

gefragt von a1exandera1exander am 08.12.2007 um 14:43 Uhr

Hallo,

folgendes habe ich versucht:

DOPT="1 \"Test 1\" 1 2 \"Test2\" 1" && echo Xdialog -checklist Test 0 0 5 $DOPT

Da kommt korrekt

Xdialog -checklist Test 0 0 5 1 "Test 1" 1 2 "Test2" 1

wenn ich die Zeile so auf der Konsole ausführe, funktioniert das.

Mache ich jetzt daraus

DOPT="1 \"Test 1\" 1 2 \"Test2\" 1" && RESULT=$(Xdialog -checklist Test 0 0 5 $DOPT)

sagt XDialog "falsche Anzahl Parameter", was wahrscheinlich daran liegt, das die mit in "" mit Leerzeichen dazwischen nicht als ein Parameter gezählt werden.

Wo muss man da zusätzlich escapen ?

Frage beantworten

Hier finden Sie weitere Fragen zu den Themen:

Computer x 77.413 Linux x 1.209 skripte x 14 bash x 9 scripting x 8

anonym
beantwortet von pjakobs am 8. Dezember 2007 15:00
0x
Die Antwort ist hilfreich? Dann klick mich!

hmm...

Schaut für mich weniger nach einem escaping Problem aus, sondern so als ob Xdialog die ganze Variable $DOPT als einen Parameter sähe... Ich hab auch auf die Schnelle kein Beispiel gefunden, wo Xdialog mit der Optionsliste in einer Variable genutzt worden wäre....

pj

Kommentar von 25a573f3d9e44f654069da1aa41e63edsmalla1exander am 8. Dezember 2007 17:58

Die Optionsliste wird ncht, wie da angegeben, einfach in die Variable geschrieben, sondern aus diversen Dateien extrahiert und dynamisch zusammengesetzt. Das hier war nur zur Vereinfachung...

Kommentar von pjakobs am 8. Dezember 2007 18:01

und Du übergibst sie wie?

Dann vermutlich doch wieder in einer Shell Variablen, oder?

Kommentar von 25a573f3d9e44f654069da1aa41e63edsmalla1exander am 8. Dezember 2007 18:45

Übergeben tue ich die so wie oben dargestellt, nur DOPT wird nicht direkt gesetzt sondern vorher erst zusammengebaut.

Mittlerweile habe ich die Lösung aber gefunden: DOPT="1 \"Test 1\" 1 2 \"Test2\" 1" && RESULT=$(eval Xdialog -checklist Test 0 0 5 $DOPT) ... eval war das fehlende Schlüsselwort...

Kommentar von pjakobs am 8. Dezember 2007 19:08

cool, da lern ich auch wieder was ;)

Aber da lag ich ja nicht ganz so falsch. Die shell hat den ganzen Inhalt von $DOPT als einen String an Xdialog übergeben und eval sorgt dafür, daß es erst ausgerollt wird.

Kommentar von pjakobs am 8. Dezember 2007 19:08

cool, da lern ich auch wieder was ;)

Aber da lag ich ja nicht ganz so falsch. Die shell hat den ganzen Inhalt von $DOPT als einen String an Xdialog übergeben und eval sorgt dafür, daß es erst ausgerollt wird.



Verwandte Fragen

Verwandte Fragen

    Linux über Stick booten lassen.

    Umstieg auf Linux...

    Linux-Passwort dreimal falsch eingegeben - Rechner gesperrt, was tun?

Noch nicht die richtige Antwort? Dann hier in allen Fragen und Tipps suchen:




Die unter gutefrage.net angebotenen Dienste und Ratgeber Inhalte werden nicht geprüft. Die Richtigkeit der Inhalte wird nicht gewährleistet. Bitte lesen Sie hierzu auch unsere Rechtlichen Hinweise.