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

Dateinamen mit Leerzeichen in Shripten



Hallo Liste!

Preisfrage: was stimmt nicht am folgenden Konstrukt?

#!/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: