[linux-l] doofes bash problem

Frank Reker frank at reker.net
Mi Feb 16 14:19:19 CET 2005


Am Wed 16. Feb 2005 14:02 +0000 schrieb Axel Burkhardt:

>
>Aber die "for" - Schleife scheint das Problem zu sein. Drum hilft auch kein
>
>find . -name "*txt" -exec echo {} \;
>
>in der Schleife - auch hier wird die Variable $foo falsch gesetzt; 
>logischerweise tut ein echo "$foo" das Problem ebensowenig lösen.
>Das brachte mich aber auf die Idee, die Leerzeichen schon im find 
>wegzuescapen.
>Aber
>
>for foo in `find . -name "*txt" -exec echo {} | sed --expression="s/ /\\ 
>/g" \; `; do echo "$foo"; done;
>
>führt leider zu einem Fehler: "Fehlendes Argument für "-exec"."

Weil das exec nicht durch ; terminiert ist. Die Pipe wird von der shell
interpretiert nicht von find. Muesstest du wenn schon quoten.
Aber wofuer brauchst du die for-schleife??? 
Mit find ... -exec ... fuehrst du doch das Kommando nach exec fuer 
jede gefundene Datei aus. Wozu da noch ne Schleife??
Aber wenn du unbedingt willst..., dann mach IFS='$\n' for der Schleife. 
Dann splitted bash den string nur bei newlines, aber nicht bei spaces
oder tabs.


-- 
Don't worry be happy ...
Ciao Frank
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: nicht verfügbar
URL         : <https://mlists.in-berlin.de/pipermail/linux-l-mlists.in-berlin.de/attachments/20050216/34371945/attachment.sig>


Mehr Informationen über die Mailingliste linux-l