${!var}
A variável que aponta para outra: expande o nome guardado dentro dela.
Indireção: se casta=rainha e rainha="põe os ovos", então ${!casta} devolve "põe os ovos". O shell lê o nome dentro da variável e expande esse outro nome.
É a peça das tabelas improvisadas, de antes dos arrays associativos. No bash moderno, declare -n cria referências de verdade; no zsh o mesmo gesto se escreve ${(P)var}.
$ rainha="põe os ovos"
$ casta=rainha
$ echo "${!casta}"
põe os ovos