Ekspansja tablic bashowych za pomocą zmiennej rozbudowy kierunku

Próbuję rozwinąć wszystkie wartości w tablicy, do której dochodzę poprzez rozszerzanie pośrednie:

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

Błędnie używam „Lista kluczy tablicy” w ostatnim poleceniu, ponieważ nie wiem, jak wpisać właściwą komendę?

Chciałbym dostać:

coconut banana

być może bez uciekania się do jakiegoś brzydkiegoeval hack .. Przykład jednego włamania:

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

my_array może zawierać wartości ze spacjami!

EDYTOWAĆ

W funkcji, którą piszę, moja_nazwa_array jest ustawiana przez „$ 1”, więc nie mogę jej użyć dosłownie.

Podobny do:https://unix.stackexchange.com/questions/20171/indirect-return-of-all-elements-in-an-array ale muszę unikać używaniaeval aby chronić się przed paskudnymi skutkami, jakie miałby skrypt, gdyby środowisko zostało „zhakowane”tylko w odpowiednim czasie...

questionAnswers(2)

yourAnswerToTheQuestion