Hallo Alexander,
folgendes habe ich versucht:
DOPT=„1 „Test 1“ 1 2 „Test2“ 1“
RESULT=Xdialog -checklist Test 0 0 5 $DOPT
Wo muss man da zusätzlich escapen ?
zum Ausführen von beliebigen, dynamisch zusammengebauten Strings als Befehl ist
eval zuständig:
RESULT=`eval "Xdialog -checklist Test 0 0 5 $DOPT"`
oder etwas schöner ohne die veralteten Backticks:
RESULT=$(eval "Xdialog -checklist Test 0 0 5 $DOPT")
Warum Deine Variante
RESULT=`Xdialog -checklist Test 0 0 5 $DOPT`
nicht funktioniert, siehst Du, wenn der Debugmodus der bash aktiviert
wird (per set -x).
Hier am Beispiel des xterm-Kommandos mit einem Titelparameter, der Leerzeichen enthält und deshalb in Anführungszeichen gesetzt werden muss:
$ set -x
+ set -x
$ PARA="-title \"Hallo Welt\""
+ PARA='-title "Hallo Welt"'
# So nicht, denn hier führt die Shell nur den Befehl xterm -title '"Hallo' aus und
# sieht nach der Ausführung einen weiteren Befehl 'Welt"'
$ result=`xterm $PARA`
++ xterm -title '"Hallo' 'Welt"'
No absolute path found for shell: Welt"
+ result=
# eval ist hier Dein Freund:
$ result=`eval "xterm $PARA"`
++ eval 'xterm -title "Hallo Welt"'
+++ xterm -title 'Hallo Welt'
+ result=
Gruß,
-Andreas.