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