Dateinamen mit Quotes in Shell Skripten
Peter Ohlerich
peter.ohlerich at uni-bielefeld.de
Wed Aug 29 11:21:03 CEST 2001
Steffen Pingel wrote:
>
> Hallo,
>
> ich habe in Shell Skripten immer wieder das Problem, dass ich Dateinamen
> mit Quotes verarbeiten möchte. Wenn ich 'find -exec ... \;' benutze
> scheint sich find um das entsprechende escapen zu kümmern. Aber wenn ich
> die Dateinamen z.B. aus einer Datenbank hole und xargs benutzen möchte,
> bekomme ich Fehler wie "unmatched quote" von der Shell.
>
> Teilweise habe ich perl benutzt, um das Problem zu umgehen, aber das
> scheint mir nicht der eleganteste und Ansatz zu sein:
>
> ls | perl -p -e "s/\'/\\\'/g;s/\ /\\\ /g" | xargs ...
>
> Gibt es ein gnu tool, dass Dateinamen nach allen Regeln der Kunst
> escapen kann oder eine andere Möglichkeit Strings mit Quotes als
> Parameter zu übergeben?
> ...
Hallo!
Ich finde es lustig, daß es Leutre gibt, die für alles Perl nutzen.
Etwas schneller ist (mit fast der gleichen Syntax) sed. Okay aber
Unix-Philosophie beiseite. Wenn Du find benutzt nimm mal folgendes:
find ..... -print0| xargs -0
Dann brauchst Du nicht zu quoten und es tut trotzdem. Wenn Du ohne
find dabei gehst, hast Du eigentlich nur die Chance sed (oder auch
perl) zum quoten zu benutzen. Alternativ kannst Du auch eine andere
Sprache als die Shell benutzen. Z.B. TCL wertet die Parameter richtig
(auch ohne quoting) aus.
Peter.
P.S.: Wie das in Perl behandelt wird, weiß ich nicht. Ich spreche
leider kein Perl.
--
----------------------------------------------------------------------
HRZ d. Universitaet Bielefeld Phone: +49 521 106-00
Dipl.-Inf. Peter Ohlerich Email: peter.ohlerich at uni-bielefeld.de
P.O.Box 100131 WWW: http://www.uni-bielefeld.de/hrz/
D-33501 Bielefeld (Germany)
More information about the Linux
mailing list