[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Dateinamen mit Leerzeichen in Shripten



Am Sonntag, 26. August 2007 19:03 schrieb Adalbert Dawid:
> Hallo Liste!
>
> Preisfrage: was stimmt nicht am folgenden Konstrukt?

Welchen Preis gibt es denn?

> #!/bin/bash
> find /bin | while read FILE; do
> 	echo "Datei ${FILE} existiert."
> 	read -p "Löschen? (y/n)" -n 1 REPLY
> 	if [ ${REPLY} = "y" ]; then rm -f ${FILE}; fi
> done
>
> Das Skript ist zwar sinnlos, aber es soll nur mein Problem verdeutlichen:
> Das read innerhalb der Schleife "funktioniert nicht". Hat jemand eine
> Erklärung? Dieses kleine aber überaus nervige Problem taucht übrigens auch
> in der folgenden Minimalkonfiguration auf:
>
> find /bin | while read FILE; do read REPLY; done
>
> Auch hier wird REPLY nie von read abgefragt!
> Das Konstrukt
>
> for FILE in `find /bin`; do read REPLY; done
>
> würde zwar prinzipiell gehen, ich brauche aber die Variante mit while,
> weil nur diese imstande ist Dateinamen mit Leerzeichen im Namen korrekt zu
> verarbeiten. Das for zerlegt jeden Dateinamem mit Leerzeichen in mehrere
> Tokens, das while trennt immer nur an Zeilenumbrüchen.
>
> Danke für eure Anregungen!
>
> --
> Grüße
> Adalbert Dawid



Reply to: