Bug using ] as index when declaring associative array

2013-10-23 Thread Evan Gates
I recently tried to use ] as an index in an associative array. While
it works fine after the array is declared, I could not figure out a
way to include it in the initial declaration.

To reproduce:

declare -A aarr
aarr[\]]=rbrac
declare -p aarr # this should print a legal declaration for aarr
eval $(declare -p aarr) # results in "bash: []]=rbrac: bad array subscript"

-emg



Re: Bug using ] as index when declaring associative array

2013-10-23 Thread Greg Wooledge
On Wed, Oct 23, 2013 at 01:17:12PM -0700, Evan Gates wrote:
> declare -A aarr
> aarr[\]]=rbrac
> declare -p aarr # this should print a legal declaration for aarr
> eval $(declare -p aarr) # results in "bash: []]=rbrac: bad array subscript"

Cannot reproduce in bash 4.3-beta2.

imadev:~$ unset a
imadev:~$ declare -A a; a[\]]=foo
imadev:~$ declare -p a
declare -A a='(["]"]="foo" )'
imadev:~$ eval "$(declare -p a)"
imadev:~$ eval $(declare -p a)
imadev:~$ echo $BASH_VERSION
4.3.0(1)-beta2

Looks like it was fixed since 4.2:

imadev:~$ bash-4.2 -c 'unset a; declare -A a; a[\]]=foo; eval $(declare -p a)'
bash-4.2: []]=foo: bad array subscript