[linux-l] bash und eval

Oswald Buddenhagen ossi at kde.org
Mo Mai 26 14:04:13 CEST 2003


On Mon, May 26, 2003 at 01:28:35PM +0200, Michael van Gemmern wrote:
> Am Montag, 26. Mai 2003 13:11 schrieb alex b.:
> > ich glaube ivan möchte wissen, warum die erste ausgabe gänsebeine
> > beinhaltet...
> 
> weil davor das Maskierungszeichen  \  steht.
> 
nein. davon kommt nur, daß CMD die anführungszeichen enthält.
wenn man einfach nur $CMD hinschreibt, macht die shell word splitting und
nimmt das ergebnis direkt als parameter für execv() (naja, bildlich
gesprochen), anstatt diverse expansions und schließlich quote removal
anzuwenden, wie es bei einer normalen kommandointerpretation ist.

generell korrekt wäre im übrigen eval "$CMD", nicht eval $CMD, um das
word splitting vor der interpretierung zu verhindern (versuch mal
CMD='echo "a   b"').

gruß

-- 
Hi! I'm a .signature virus! Copy me into your ~/.signature, please!
--
Chaos, panic, and disorder - my work here is done.



Mehr Informationen über die Mailingliste linux-l