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