Tanto o bash quanto o zsh têm uma maneira de realizar a expansão indireta, mas usam uma sintaxe diferente.
É fácil fazer expansão indireta usando eval ; isso funciona em todos os POSIX e na maioria dos shells Bourne. Tome cuidado para citar corretamente no caso de o valor conter caracteres que tenham um significado especial no shell.
eval "value=\"\${$VAR}\""
echo "$VAR"
echo "$value"
${${VAR}} não funciona porque não é um recurso que qualquer shell implementa. A coisa dentro das chaves deve estar em conformidade com as regras de sintaxe que não incluem ${VAR} . (Em zsh, isso é compatível com a sintaxe, mas faz algo diferente: substituições aninhadas executam transformações sucessivas no mesmo valor; ${${VAR}} é equivalente a $VAR , pois isso realiza a transformação de identidade duas vezes no valor.)