Hallo Am Samstag, 28. Juni 2003 15:44 schrieb Bernd Obermayr:
Wolfgang Erlenkötter schrieb:
Hallo Liste,
ich teste gerade ein Skript und verstehe nicht, warum es nicht so funktioniert, wie es sollte:
Mit find . -type f -maxdepth 1 -print|sed 's/ /\ /g' auf der Kommandozeile erhalte ich:
./KARL ./karl ./paul ./ott.sh ./Diese\ Datei ./teste.tar
(Die Dateien im aktuellen Verzeichnis) Das heißt, die Leerstelle in dem Dateinamen Diese Datei soll geschützt werden.
Baue ich das ganze in ein Skript:
for FILE in `find . -type f -maxdepth 1 -print|sed 's/ /\ /g'`; do echo -n "File: $FILE -> " if [ -e $FILE ]; then echo -e "\033[32mOK\033[m" else echo -e "\033[31mERROR\033[m" fi done
geht das schief?
Meine Frage:
- Warum geht es schief?
- Wie mache ich das besser?
Danke schon mal für die Tipps.
Tja, Kristallkugel hab ich keine, was geht schief? Obiger Code läuft bei mir sowohl als Script wie auf der Commandozeile.
Mit dem gleichen Ergebnis? Also. Hier die unterschiedlichen Ausgaben: wolfgang@pio:~/leer> find . -type f -maxdepth 1 -print|sed 's/ /\ /g' ./KARL ./karl ./paul ./ott.sh ./Diese\ Datei ./teste.tar und: ./ott.sh (so heißt das Skript) File: ./KARL -> OK File: ./find -> OK File: ./karl -> OK File: ./paul -> OK File: ./ott.sh -> OK File: ./Diese -> ERROR File: Datei -> ERROR File: ./teste.tar -> OK Im zweiten Beispiel wird die Leerstelle als Trennzeichen benutzt! Gruß Wolfgang