a1exander 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 ?
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
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...
und Du übergibst sie wie?
Dann vermutlich doch wieder in einer Shell Variablen, oder?
Ü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...
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.
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.