Вложенные evals - вещь запутанная.
Во-первых,
eval echo \$\(eval echo \$$a\)
заставляет интерпретатор оценивать следующее:
echo $(eval echo $b)
Интерполяция самой внутренней вложенной команды (например, $ (eval echo $ b)
) приводит к:
echo c
Что дает вам результат:
c
Если вы хотите, чтобы вложенные выражения вычислялись правильно (и я настоятельно рекомендую , а не , использовать вообще eval
- )), вы должны получить довольно странно. Примеры см. В других ответах.