2

bash: Escapen in Scripten

Frage von a1exander a1exander

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 ?

Fragen zu gleichen Themen finden

Antworten (1)

  • 0
    Antwort von pjakobs pjakobs

    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 a1exander a1exander

    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 pjakobspjakobs

    und Du übergibst sie wie?

    Dann vermutlich doch wieder in einer Shell Variablen, oder?

    Kommentar von a1exander a1exander

    Ü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 pjakobspjakobs

    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 pjakobspjakobs

    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.

Diese Frage

Verwandte Fragen

Noch nicht den richtigen Rat gefunden?

Einfach und schnell viele hilfreiche Ratschläge von Deutschlands aktivster Ratgeber-Community erhalten!

Einfach und schnell einen Tipp erstellen und Ihren guten Rat mit anderen teilen!

Einfach und schnell ein Video hochladen und anschaulichen Rat an alle geben!

Die unter gutefrage.net angebotenen Dienste und Ratgeber Inhalte werden nicht geprüft. Die Richtigkeit der Inhalte wird nicht gewährleistet. Rechtliche Hinweise finden Sie hier.