Seguito dato alla parte di fondo di questa domanda .
In bash
posso usare ${!FOO}
per la doppia sostituzione, in zsh
${(P)FOO}
. In entrambi, la vecchia scuola (hack-y) eval \$$FOO
funziona.
Quindi, la cosa più intelligente e più logica per me sarebbe la ${${FOO}}, ${${${FOO}}}…
sostituzione doppia / tripla / n. Perché questo non funziona come previsto?
Secondo: cosa fa \
la eval
dichiarazione? Credo che sia una via di fuga, rendendo qualcosa di eval \$$$FOO
impossibile. Come fare una sostituzione tripla / n con quella che funziona in ogni shell?
l3=l2; eval eval eval echo \\\$\\$\$$l3
→53294
quindi non esattamente modulare.