Expansão do array Bash usando expansão indireta variável

Eu estou tentando expandir todos os valores em uma matriz que eu chego através da expansão indireta:

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

Eu estou erroneamente usando "Lista de chaves de matriz" no último comando porque eu não sei como digitar o comando certo?

Eu gostaria de receber:

coconut banana

possivelmente sem recorrer a algum feioeval hack .. Exemplo de um hack de chupar:

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

my_array pode conter valores com espaços!

EDITAR

Na função que estou escrevendo, my_array_name é definido por meio de "$ 1", portanto não posso usá-lo literalmente.

Igual a:https://unix.stackexchange.com/questions/20171/indirect-return-of-all-elements-in-an-array mas eu preciso evitar usareval para proteger dos efeitos desagradáveis ​​que o script teria se o ambiente fosse "hackeado"apenas no momento certo...

questionAnswers(2)

yourAnswerToTheQuestion