FW: Hilfe!: bash und Leer- u. Sonderzeichen in Pfaden
Hi, ich habe hier ein Problem mit einem bash-Skript. Wie bekomme ich es hin, dass Leer- und Sonderzeichen von der Bash in Pfadangaben korrekt umgesetzt werden. --- IFS=$'\n' # Zeilenende ist Trenner DIRS=`ls -1` # ein Verzeichnis pro Zeile for DIR in $DIRS; do cd $DIR #... done --- In obigem Fragment funktioniert das "cd"-Kommando leider nur, wenn im Verzeichnisnamen keine Leer- oder andere Sonderzeichen auftauchen. Wie bewege ich die bash dazu, den Inhalt der Variablen DIR mit den entsprechenden Escape-Sequenzen auszustatten, damit die nachfolgenden Kommandos korrekt funktionieren. Marko -- 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
mk-lists@email.de schrieb:
ich habe hier ein Problem mit einem bash-Skript. Wie bekomme ich es hin, dass Leer- und Sonderzeichen von der Bash in Pfadangaben korrekt umgesetzt werden. --- IFS=$'\n' # Zeilenende ist Trenner DIRS=`ls -1` # ein Verzeichnis pro Zeile for DIR in $DIRS; do cd $DIR #... done --- In obigem Fragment funktioniert das "cd"-Kommando leider nur, wenn im Verzeichnisnamen keine Leer- oder andere Sonderzeichen auftauchen. Wie bewege ich die bash dazu, den Inhalt der Variablen DIR mit den entsprechenden Escape-Sequenzen auszustatten, damit die nachfolgenden Kommandos korrekt funktionieren.
Stichwort: Richtiges Quoten! Einfacher: for DIR in */; do cd "$DIR" #... # cd .. done Das cd .. _könnte_ nötig sein, da du sonst im Unterverzeichnis nicht in das gewünschte Verzeichnis gehen kannst. Martin -- 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
Am Dienstag, 1. Mai 2007 schrieb Martin Ereth:
mk-lists@email.de schrieb:
ich habe hier ein Problem mit einem bash-Skript. Wie bekomme ich es hin, dass Leer- und Sonderzeichen von der Bash in Pfadangaben korrekt umgesetzt werden. --- IFS=$'\n' # Zeilenende ist Trenner DIRS=`ls -1` # ein Verzeichnis pro Zeile for DIR in $DIRS; do cd $DIR #... done --- In obigem Fragment funktioniert das "cd"-Kommando leider nur, wenn im Verzeichnisnamen keine Leer- oder andere Sonderzeichen auftauchen. Wie bewege ich die bash dazu, den Inhalt der Variablen DIR mit den entsprechenden Escape-Sequenzen auszustatten, damit die nachfolgenden Kommandos korrekt funktionieren.
Stichwort: Richtiges Quoten!
Einfacher:
for DIR in */; do cd "$DIR" #... # cd .. done
Das cd .. _könnte_ nötig sein, da du sonst im Unterverzeichnis nicht in das gewünschte Verzeichnis gehen kannst.
besser ist for DIR in */; do (cd "$DIR"; .... ) done hier wird cd in einer Subshell gemacht, so daß jede Schleifeniteration (also vor dem cd) im gleichen Verzeichnis "startet". Man spart sich das cd .. (und was wenn's mal tiefer in den verzeichnisbaum hineingeht) Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
participants (3)
-
Dr. Jürgen Vollmer
-
Martin Ereth
-
mk-lists@email.de