David Korn schrieb:
cc: [EMAIL PROTECTED]
Subject: Re: [ast-developers] Arrays in structured variables
--------
I'm having problems extracting an array component from a structured
variable. Is that supposed to work anyway? Here is an example:
el0=(typeset name="base"; typeset -a children)
el1=(typeset text=one)
el2=(typeset text=two)
el0.children=($el1 $el2)
print "child0 = ${el0.children[0]}"
The output looks somewhat strange:
child0 = (
The output of 'print $el0', however, is correct:
( typeset -a children=( '(' text\=one ')' '(' text\=two ')' )
name=base )
and the example works if a structured variable is used in place of the
array, so I think it's bug specific to array components.
I think that the problem is that the ( and ) are only recognized during
parsing, not during expansion.
That is why you need to do
eval bar="$foo"
to copy compound variable foo into bar rather than just
bar=$foo
Thus, the line
el0.children=($el1 $el2)
does not do what you expect. I suspect that you wanted to do
el0.children=( (typeset text=one) (typeset text=two) )
which you could do as
eval el0.children=\( "$el0" "$el2" \)
If this is not what you intended, let me know.
Thanks for the clarification. Actually
eval "el0.children=($el1 $el2)"
works as intended. Further experiments showed that
el3=(typeset text=three)
eval "el0.children+=($el3)"
does not work (parser stumbles on '(('), neither does
eval "el0.children+=( $el3 )"
(result is empty, not quite sure why), but
eval "el0.children+=(\"$el3\")"
finally did the trick.
Regards,
Bernd
--
Bernd Eggink
[EMAIL PROTECTED]
http://sudrala.de
_______________________________________________
ast-developers mailing list
[email protected]
https://mailman.research.att.com/mailman/listinfo/ast-developers