Знак доллара в качестве строкового параметра в задании Дженкинса удваивается - PullRequest
0 голосов
/ 03 марта 2020

Я собрал Jenkins с параметрами в моей конфигурации:

a = a$
b = b$$
c = c$$$
d = d$$$$
e = e$e$e$e$

Я собрал свой конвейер, и он содержал следующие возможности для отображения содержимого переменных среды:

sh """
    echo "${env.a}"
    echo "\$a"
    echo "${env.b}"
    echo "\$b"
    echo "${env.c}"
    echo "\$c"
    echo "${env.d}"
    echo "\$d"
    echo "${env.e}"
    echo "\$e"
"""

Он вернул:

+ echo 'a$'
a$
+ echo 'a$$'
a$$
+ echo 'b$'
b$
+ echo 'b$$'
b$$
+ echo c14
c14
+ echo 'c$$$$'
c$$$$
+ echo d14
d14
+ echo 'd$$$$'
d$$$$
+ echo 'eeee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$14'
eeee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$14
+ echo 'ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$'
ee$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$e$$$$

Кто-нибудь, кто может объяснить это поведение?

1 Ответ

1 голос
/ 03 марта 2020

Прежде всего - очень интересная проблема. Результаты ... необычные:)

Я не могу воспроизвести 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$$. И, наконец, заменяет каждые $ на $$ при печати:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...