Para expandir a indireção da matriz, a string [@]
deve fazer parte da variável. Funciona para os valores:
for thelist in "${master_list[@]}" ; do
reallist=$thelist[@]
for key in "${!reallist}" ; do
echo "the key is: $key"
done
done
Para as chaves, não vejo nada sem eval
.
for thelist in "${master_list[@]}" ; do
eval keys=('"${!'$thelist'[@]}"')
for key in "${keys[@]}" ; do
echo "the key is: $key"
done
done
Tanto quanto você tem certeza de que a master_list contém apenas nomes de variáveis, ela deve ser segura.