[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