Le 11/12/2020 à 13:08, Oğuz écrivait :
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)'?

Oğuz


Look like coherent with other Bash specific constructs like previous associative array key syntax that does not split a key variable:

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

Or double square bracket tests:

    foo='1 2'
    [[ $foo == '1 2' ]]

Did you try with?:

    # possibly originating read -a or mapfile
    declare -a foo=(1 2 )

    # Declare associative array from key value array above
    declare -A assoc=("${foo[@]}" 3)

--
Léa Gris


Reply via email to