Shell-Skript: Array mit Leerzeichen und eval
Liebe Liste, ich wuerde gern in einem Shell-Skript ein Array $LIST, dessen Eintraege (=Dateinamen) Leerzeichen enthalten, kopieren. Dies soll in einer Funktion geschehen, der ein Parameter ${1} uebergeben wird. Da der Name des Zielarrays von diesem Parameter abhaengt, moechte ich das mit eval machen; eval entfernt aber saemtliche Anfuehrungsstriche, die ich zum Quoten der Leerzeichen brauche (kann man sich mit set -x angucken). Der (nicht funktionierende) Code sieht in etwa so aus: set -x eval 'LISTCOPY_'"${1}"'=( '"${LIST[@]}"' )' Wie kann ich (nach Moeglichkeit, ohne mit einer Schleife das Array elementweise zu kopieren) die Leerzeichen so maskieren (vermutlich mit \'?), das eval sie beim Kopieren beibehaelt? Meine Versuche, innerhalb der geschweiften Klammern von ${LIST[@]} einen Suchen- und Ersetzen-Ausdruck anzugeben, der genau das macht, sind bisher gescheitert. Vielen Dank fuer Eure Hilfe, Kurt Bennater -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo,
ich wuerde gern in einem Shell-Skript ein Array $LIST, dessen Eintraege (=Dateinamen) Leerzeichen enthalten, kopieren. Dies soll in einer Funktion geschehen, der ein Parameter ${1} uebergeben wird. Da der Name des Zielarrays von diesem Parameter abhaengt, moechte ich das mit eval machen; eval entfernt aber saemtliche Anfuehrungsstriche, die ich zum Quoten der Leerzeichen brauche (kann man sich mit set -x angucken). Der (nicht funktionierende) Code sieht in etwa so aus:
set -x eval 'LISTCOPY_'"${1}"'=( '"${LIST[@]}"' )'
Wie kann ich (nach Moeglichkeit, ohne mit einer Schleife das Array elementweise zu kopieren) die Leerzeichen so maskieren (vermutlich mit \'?), das eval sie beim Kopieren beibehaelt? Meine Versuche, innerhalb der geschweiften Klammern von ${LIST[@]} einen Suchen- und Ersetzen-Ausdruck anzugeben, der genau das macht, sind bisher gescheitert.
hmm, momentan bin ich mir nicht mal sicher, ob das selbst mit einer Schleife funktioniert. (Muss ich da auf Perl o.ae. ausweichen?) David? Christian? Vielen Dank, Kurt -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (1)
-
curdy@congster.de