On Fri, Dec 11, 2020 at 03:08:04PM +0300, Oğuz wrote:
> I was trying the new features of bash 5.1 and came across this inconsistent
> behavior:
> 
>     $ foo='1 2'
>     $ declare -A bar=($foo 3)
>     $ declare -p bar
>     declare -A bar=(["\$foo"]="3" )
>     $
>     $ bar+=($foo 3)
>     $ declare -p bar
>     declare -A bar=(["\$foo"]="3" ["1 2"]="3" )
> 
> Is there a particular reason to avoid performing expansions in `declare -A
> bar=($foo 3)'?

When declaring ``associative array'', I alway use ``quoted'' syntax: 

    $ foo='1 2'
    $ declare -A bar='($foo 3)'
    $ declare -p bar
    declare -A bar=(["1 2"]="3" )

Not sure how to explain this, but I'm not surprised seeing this working so.

    $ bar+=($foo 3)
    $ declare -p bar
    declare -A bar=(["1 2"]="3" )

Seem ok for me!

-- 
 Félix Hauri  -  <fe...@f-hauri.ch>  -  http://www.f-hauri.ch

Reply via email to