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
Notamy_array
Puede contener valores con espacios!
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...