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 ?
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.