Copia de matrices usando variables dinámicas

Copia de matrices usando variables dinámicas

Tengo una matriz de 24 elementos almacenados debajo de la matriz.mba_ext.

echo ${mba_ext[13]} gives me expected results.

Ahora he creado una variabletemp="mba_ext"

Ahora estoy intentando copiar el contenido de la matriz a otra matriz haciendo uso de la variable temporal. Escribí el código como se muestra a continuación:

new_array=$(eval echo '$'{${temp}[@]})

Cuando doy, echo$new_arrayobtengo que todo el contenido de la matriz se imprime sin ningún índice.

Cuando doy echo ${new_array[4]}no obtengo resultados. Idealmente, este comando debería imprimir el contenido en la ubicación del índice 4.

¿Pueden algunos ayudarme?

Respuesta1

Residencia enesta respuesta en superusuario.

Puede utilizar la dirección indirecta variable con una matriz adecuada […]. Lo complicado es que debes incluir el elemento de la matriz (o [@]todos los elementos) en la variable a través de la cual estás indirectamente.

Código de ejemplo con los nombres que usaste:

mba_ext=('normal' 'with space' 'double"quote' "single'quote" $'new-\n-line' '\backslash')
temp="mba_ext"
temparray="${temp}[@]"   # This includes the array name AND "[@]"
new_array=("${!temparray}")
printf '<%s>\n' "${new_array[@]}"

información relacionada