Expansión de matriz Bash usando expansión de direccionamiento variable

Estoy tratando de expandir todos los valores en una matriz a la que llego a través de la expansión indirecta:

> my_array=(coconut banana)
> echo "${my_array[@]}" 
coconut banana
> my_array_name=my_array
> echo ${!my_array_name}
coconut
> echo "${!my_array_name[@]}"
0

Estoy utilizando erróneamente "Lista de claves de matriz" en el último comando porque no sé cómo escribir el comando correcto.

Me gustaría conseguir:

coconut banana

Posiblemente sin recurrir a algunos feos.eval hackear. Ejemplo de un hack de chupar:

> echo \${$my_array_name[@]}
${my_array[@]}
> eval echo \${$my_array_name[@]}
coconut banana
Nota

my_array Puede contener valores con espacios!

EDITAR

En la función que estoy escribiendo, my_array_name se establece a través de "$ 1", por lo que no puedo usar eso literalmente.

Similar a:https://unix.stackexchange.com/questions/20171/indirect-return-of-all-elements-in-an-array pero necesito evitar usareval para protegerse de los efectos desagradables que tendría el script si el entorno fuera "hackeado"justo en el momento adecuado...

Respuestas a la pregunta(2)

Su respuesta a la pregunta