`set' in der shell: Bug?

Jan-Benedict Glaw jbglaw at lug-owl.de
Tue Jun 1 18:49:46 CEST 2010


On Tue, 2010-06-01 14:31:33 +0200, Michael Westermann <michael at dvmwest.de> wrote:
> > On Mon, 2010-05-31 17:55:26 +0100, A. Dreyer (LUG-OWL) <ml10227 at adreyer.com> wrote:
> > > On 31/05/10 16:34, Jan-Benedict Glaw wrote:
> > > > Input:
> > > > 	asdf, "Foo this is", NULL, 17.3
> > > > 
> > > > Output soll sein, daß
> > > > 
> > > > 	$1 = adsf,
> > > > 	$2 = Foo this is,
> > > > 	$3 = NULL,
> > > > 	$4 = 17.3
> > > > 
> > > > ist. Klappt auch, solange man
> > > > 
> > > > 	set asdf, "Foo this is", NULL, 17.3
> > > > 
> > > > macht, scheint aber fehlzuschlagen, wenn der Text aus einer Variablen
> > > > kommt:
> > > > 
> > > > #!/usr/bin/env sh
> > > > echo ${BASH_VERSION}
> > > > set foo "bar baz" stuff
> > > > echo "1: $1    2: $2   3: $3"
> > > > X='foo "bar baz" stuff'
> > > > set $X
> > > > echo "1: $1    2: $2   3: $3"
> > > > set `echo $X`
> > > > echo "1: $1    2: $2   3: $3"
> > > > 
> > > > 
> > > > Das ergibt dann:
> > > > 
> > > > 3.1.17(1)-release
> > > > 1: foo    2: bar baz   3: stuff
> > > > 1: foo    2: "bar   3: baz"
> > > > 1: foo    2: "bar   3: baz"
> > > > 
> > > > 
> > > > Erwartet hätte ich in allen drei Fällen das Ergebnis der ersten Zeile.
> > > > Die Ergebnisse der zweiten und dritten Zeile halte ich für falsch.
[...]
> schreib doch mal
> 
> eval set $X

Naja...  Das würde ein spezielles Problem lösen, aber das würde dazu
führen, daß das, was in $X ist, ausgeführt werden könnte. Keine
berauschende Idee, wenn da ggf. Texte, die jemand anders
implementiert, aufmal *ausgeführt* werden :)

Oder andersherum: Ich trau' mir keine hinreichend gute
Input-Validierung zu, sodaß der `eval' soweit entschärft werden kann,
daß er nicht mehr "evil" ist...

MfG, JBG

-- 
      Jan-Benedict Glaw      jbglaw at lug-owl.de              +49-172-7608481
Signature of:            http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
the second  :
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
URL: <http://lug-owl.de/pipermail/linux/attachments/20100601/33e62bd9/attachment.sig>


More information about the Linux mailing list