[linux-l] doofes bash problem
Axel Burkhardt
linux-lists at burgi.de
Mi Feb 16 14:40:34 CET 2005
Frank Reker wrote:
>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???
>
>
Weil ich mit den Dateien ein Haufen Sache vorhabe ;) Das passt nicht in
die find exec rein.
>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.
>
>
>
Das wars, was ich gesucht habe. Vielen Dank!!!
Grüße
Axel
Mehr Informationen über die Mailingliste linux-l