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