Hallo_{Bernd,Ratti,*}, * Am 13.06.2002 um 00:39 Uhr schrieb Bernd Brodesser:
* ratti schrieb am 12.Jun.2002:
nehmen wir an, ich habe sowas:
datei="egal.tmp" mv $datei wichtig.tmp
Wie kann ich sicherstellen, daß das immer funktioniert, auch wenn $datei
mv "$datei" wichtig.tmp
völlig kranke Dateinamen enthält? Also beispielsweise sowas wie:
5 1/2"-Diskette.jpeg
Das geht allerdings grundsätzlich nicht. Keine Datei kann ein / in ihrem Namen enthalten, da der / (slash) der Trenner der Pfadbestandteile ist. / und das ASCII-Zeichen NUL gehen nicht, sonst alles.
da man davon ausgehen kann das die Datei bereits existiert, muß der Name gültig (wenn auch ungewöhnlich) sein. Probleme bereiten hier natürlich alle Zeichen die in der Shell eine besondere Bedeutung besitzen. Ein möglicher Lösungsansatz, der allerdings nur flüchtig von mir getestet wurde könnte so aussehen: Quote=$( echo "$datei" | sed -e 's/\"/\\\"/g' \ -e 's/\*/\\\*/g' \ -e 's/\?/\\\?/g' ) eval mv \""$Quote"\" wichtig.tmp -Jürgen -- Jede Aufgabe benötigt doppelt so viel Zeit wie Sie ansetzen. Verdoppeln Sie die Zeit, dauert die Aufgabe viermal so lang. / Registered Linux-User #130804 http://counter.li.org \ \ Linux Stammtisch Bremerhaven http://linux.hs-bremerhaven.de /