On Sat, Jul 1, 2023, at 3:55 PM, Top Dawn wrote:
> I believe there is a bug with associative arrays, when once referenced in
> another function through the -n option, both the new reference name and the
> old one are made available.
>
> ```bash
>
> #!/bin/bash
> function my_function(){
> declare -A my_array
> my_array=(["one"]="one")
> other_function "my_array"
> }
>
> function other_function(){
> declare -n other_array="${1-}"
> echo "${other_array["one"]}"
> echo "${my_array["one"]}"
> }
>
> my_function
>
> ```
>
> will output :
>
> ```bash
>
> one
> one
>
> ```
>
> I believe this to be a bug.
What makes you think so? Variables are always visible in invoked
functions, unless you shadow them using local/declare/typeset.
% cat /tmp/foo.bash; echo
function my_function(){
declare -A my_array
my_array=(["one"]="one")
other_function
}
function other_function(){
echo "${my_array["one"]}"
}
my_function
% bash /tmp/foo.bash
one
--
vq