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
Notamy_array
pode conter valores com espaços!
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...