Eu tenho uma matriz de 24 elementos armazenados na matrizmba_ext.
echo ${mba_ext[13]} gives me expected results.
Agora eu criei uma variáveltemp="mba_ext"
Agora estou tentando copiar o conteúdo do array para outro array usando a variável temporária. Escrevi o código conforme mostrado abaixo:
new_array=$(eval echo '$'{${temp}[@]})
Quando dou, echo$new_array
estou recebendo todo o conteúdo do array sendo impresso sem nenhum índice.
Quando dou, echo ${new_array[4]}
não estou obtendo resultados. Idealmente, este comando deve imprimir o conteúdo no local do índice 4.
Alguém pode ajudar?
Responder1
Baseado emesta resposta no superusuário.
Você pode usar indireção de variável com um array adequado [...]. O complicado é que você precisa incluir o elemento da matriz (ou
[@]
todos os elementos) na variável pela qual está indiretando.
Exemplo de código com os nomes que você usou:
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[@]}"