`set' in der shell: Bug?

Jan-Benedict Glaw jbglaw at lug-owl.de
Tue Jun 1 14:19:51 CEST 2010


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.
> 
> Ich denke die Ausgaben sind korrekt..
> 
> > Comments?  Workarounds?
> 
> Spiel mal mit dem IFS (Input Field Separator) rum.. aber vergiss nicht
> den urspruenglichen wert zu sichern.
> 
> --snip--
> OLDIFS="$IFS"
> X='asdf, "Foo this is", NULL, 17.3'
> IFS="
> ,"
> set $X
> echo "1: $1    2: $2   3: $3"
> IFS="$OLDIFS"
> --snip--
> 
> .. da bleiben dann noch leading whitespaces aber ansonsten sollte es ok
> sein.

Mit dem IFS hatte ich schon gespielt; das machts aber nicht unbedingt
einfacher, weil dann z.B. kein Komma mehr in einem der C-Strings
auftauchen darf. Ebenso würden Geschichten wie

	foo ("This is a text with a real (\") quotation mark", 5.3);

nicht mehr ordentlich geparst werden.

Ich hab' gerade nochmal in der man page der bash gelesen, was `set'
tun sollte. Die Definition da ist etwas schwammig, würde aber IMHO
meine Erwartungshaltung abdecken.  Vielleicht mal 'nen Bug aufmachen
und schaun, was dabei herumkommt.

MfG; JBG

-- 
      Jan-Benedict Glaw      jbglaw at lug-owl.de              +49-172-7608481
Signature of:               Träume nicht von Dein Leben: Lebe Deinen Traum!
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/1507f457/attachment.sig>


More information about the Linux mailing list