Прежде всего - очень интересная проблема. Результаты ... необычные:)
Я не могу воспроизвести 100% ваших результатов на моем Jenkins, возможно, это зависит от версии / платформы. Но, к счастью, самый интересный параметр e
вернул все это безобразие. Поэтому я сосредоточусь на.
Похоже, что параметры оцениваются до того, как они передаются в среду. Таким образом, каждое вхождение $e
заменяется текущим значением переменной e
(на данный момент e$e$e$e$
). Таким образом, e
затем трижды $e
заменяется на e$e$e$e$
и, наконец, $
. Результат: e e$e$e$e$ e$e$e$e$ e$e$e$e$ $
(пробелы добавлены для удобства чтения). И это ценность хранится в окружающей среде. Вы можете увидеть, как он напечатан вашим последним echo
(но с каждым $
, замененным на $$
).
Самый длинный вывод (echo "${env.e}"
) ничего нового не делает - он просто берет ee$e$e$e$e$e$e$e$e$e$e$e$$
и оценивает его еще раз, заменяя каждое вхождение $e
на ee$e$e$e$e$e$e$e$e$e$e$e$$
. И, наконец, заменяет каждые $
на $$
при печати:)