PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : automatische Quotes



Jadawin
04-05-2006, 16:27
Hallo zusammen,

ich habe da ein Problem mit der Bash. Vielleicht weiss ja jemand, wie man
es umgehen kann. Ich hab schon viel rumprobiert, aber ...

Folgendes:



#!bin/sh
# IFS leeren, wir wollen keine Quotes, wenn
# ein Dateiname mal Leerzeichen hat
IFS=

# gefundene Dateinamen, wegen eventuellen Leerzeichen im Namen
FILES=`find /das/ist/der/pfad -type f -print0 | xargs -i -0 echo -n "\"{}\" . 0 "`

dialog --checklist 'CHOOSE FILE(S)' 40 80 30 $FILES


Ich bekomme beim Aufruf von dialog immer einen Fehler, weil mir die Bash Single Quotes
um den Inhalt von $FILES macht. Daher wird es von dialog als EIN Parameter betrachtet.

Der Trace dazu sieht so aus:


++ find /das/ist/der/pfad -type f -print0
++ xargs -i -0 echo -n '"{}" . 0 '
+ FILES="/das/ist/der/pfad/datei.001" . 0 "/das/ist/der/pfad/datei.002" . 0
+ dialog --checklist 'CHOOSE FILE(S)' 40 80 30 '"/das/ist/der/pfad/datei.001" . 0 "/das/ist/der/pfad/datei.002" . 0 '


Wie kann ich die Bash davon abhalten, den Inhalt der Variable $FILES in
Hochkommas zu setzen?

Schonmal Danke fuer eventuelle Antworten und Vorschlaege.

MfG
Jadawin

Jadawin
05-05-2006, 08:36
Ich hab noch biss'l rumprobiert und doch noch die Loesung gefunden.

Jetzt erscheint mir meine Frage etwas anfaengermaessig, aber vielleicht
muss man einige Erfahrungen erst selbst machen, bevor man es sich merkt. :rolleyes:

Nur fuers Protokoll: Wenn ich das Skript wie folgt aendere, gehts ...



#!bin/sh
# IFS leeren, wir wollen keine Quotes, wenn
# ein Dateiname mal Leerzeichen hat
IFS=

# gefundene Dateinamen, wegen eventuellen Leerzeichen im Namen quoten
FILES=`find /das/ist/der/pfad -type f -print0 | xargs -i -0 echo -n "'{}' . 0 "`

eval dialog --checklist 'CHOOSE FILE(S)' 40 80 30 $FILES