Supondo que o valor de FOOseja um nome de variável válido (digamos BAR), eval \$$FOOdivida o valor de BARem palavras separadas, trate cada palavra como um padrão curinga e execute a primeira palavra do resultado como um comando, passando as outras palavras como argumentos. A barra invertida na frente do dólar faz com que seja tratado literalmente, então o argumento passado para oeval interno é a cadeia de quatro caracteres $BAR.
${${FOO}}é um erro de sintaxe. Ele não faz uma "substituição dupla" porque não existe esse recurso em nenhum dos shells comuns (de qualquer maneira, não com esta sintaxe). No zsh, ${${FOO}} é válido e é uma substituição dupla, mas se comporta de maneira diferente do que você gostaria: executa duas transformações sucessivas no valor deFOO , sendo ambas a transformação de identidade, portanto, é apenas uma maneira elegante de escrever ${FOO}.
Se você deseja tratar o valor de uma variável como uma variável, tenha cuidado ao citar as coisas corretamente. É muito mais fácil se você definir o resultado para uma variável:
eval "value=\${$FOO}"
l3=l2; eval eval eval echo \\\$\\$\$$l3→53294portanto, não exatamente modular.