Слідкуйте за основною частиною цього питання .
У bash
я можу використовувати ${!FOO}
для подвійної заміни, в zsh
${(P)FOO}
. В обох працює стара школа (хак-у) eval \$$FOO
.
Отже, найрозумнішим і найбільш логічним для мене було б ${${FOO}}, ${${${FOO}}}…
подвійне / потрійне / п заміщення. Чому це не працює, як очікувалося?
Друге: Що робить \
у eval
висловлюванні? Я вважаю, що це втеча, що робить щось подібне eval \$$$FOO
неможливим. Як зробити потрійну / п заміну на ту, яка працює в кожній оболонці?
l3=l2; eval eval eval echo \\\$\\$\$$l3
→53294
так не зовсім модульно.