Found out that the declare statement does not properly set all variable flags before assign values:

unset arr
declare -i -a arr=(1 2 3)
declare -p arr
declare -ai arr=([0]="1" [1]="2" [2]="3")

this is ok

declare +i -a arr=(hello world)
declare -p arr
declare -a arr=([0]="0" [1]="0")

this is not ok as arr assignment was handled as integers


Same issue with associative array

unset assoc
declare -i -A assoc=([foo]=1 [bar]=2 [baz]=3
declare -p assoc
declare -Ai assoc=([foo]="1" [bar]="2" [baz]="3" )

declare +i -A assoc=([yeet]=hello)
declare -p assoc
declare -A assoc=([yeet]="0" )



--
Léa Gris


Reply via email to