[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