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

Reply via email to