[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: find-Kommando



Mario 'BitKoenig' Holbe wrote:
> Rudolf Henze <rudo.henze@googlemail.com> wrote:
>>       find . -type f -exec file '{}' \;
>> Dass man das Semikolon escapen muss, damit es nicht als
>> Befehlstrenner erkannt wird verstehe ich ja. Aber wozu denn {} in
>> einfachen Anf=FChrungszeichen setzen?
> 
> Aus demselben Grund. Ist halt nur ne andere Art des Escapens.
> 
> 	find . -type f -exec file \{\} \;
> oder
> 	find . -type f -exec file '{}' ';'
> waeren aequivalent.
> 
> Genauso wie ; ein von der Shell interpretiertes Sonderzeichen ist,
> sind es auch { und } - die oeffnen bzw. schliessen einen
> Funktionsblock. $ foo() { echo bar; }
> 	$ foo
> 	bar
> 	$ 

Es muss ja nicht gleich ein Funktionsblock sein, kann ja auch einfach
die Grouping-Syntax sein.

Aber ich finde einfach kein Beispiel für ein ungequotetes {}, welches
ein ungewünschtes Verhalten produziert.

Eine Funktionsdeklaration der Form

  a() {}

geht nicht. Auch eine Gruppierung der Form

  {}

ist in sh, dash oder bash nicht drin. 

Mit ner alten bash unter Solaris geht sowas wie

  find . -exec echo {}_foo \;

nicht. Aber da tut's auch ein gequotetes {} nicht.

Nun sind { und } laut POSIX "shell punctuation characters" und dass die
gesondert behandelt werden müssen, ist verständlich. Aber ich würde
gerne mal ein Beispiel für einen Fall sehen, in dem es mit einem
ungequoteten {} zu einem unerwartetem Verhalten kommt.

-- 
Now playing: Jeff Beck - I Ain't Superstitious

Attachment: signature.asc
Description: PGP signature


Reply to: