On Fri, Dec 11, 2020 at 4:15 PM Léa Gris <lea.g...@noiraude.net> wrote:
> 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 ) > > Word splitting and parameter expansion are different things. > 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) > > Nah, this doesn't work either. Would be really useful if it did though. $ declare -a foo=(1 2 ) $ declare -A assoc=("${foo[@]}" 3) $ declare -p assoc declare -A assoc=(["\"\${foo[@]}\""]="3" ) > -- > Léa Gris > > >