Избегайте двойных кавычек в команде оболочки файла конвейера Jenkins - PullRequest
0 голосов
/ 13 июня 2019

Ниже приведен фрагмент из моего файла Дженкинса -

stage('Configure replication agents') {
            environment {
                AUTHOR_NAME="XX.XX.XX.XX" 
                PUBLISHER_NAME="XX.XX.XX.XX"
                REPL_USER="USER"
                REPL_PASSWORD="PASSWORD"
                AUTHOR_PORT="4502"
                PUBLISHER_PORT="4503"
                AUTHOR="http://${AUTHOR_NAME}:${AUTHOR_PORT}"
                PUBLISHER="http://${PUBLISHER_NAME}:${PUBLISHER_PORT}"
                S_URI= "${PUBLISHER}/bin/receive?sling:authRequestLogin=1"
            }
            steps {
                sh 'curl -u XX:XX --data "status=browser&cmd=createPage&label=${PUBLISHER_NAME}&title=${PUBLISHER_NAME}&parentPath =/etc/replication/agents.author&template=/libs/cq/replication/templates/agent" ${AUTHOR}/bin/wcmcommand'
            }

Приведенная выше команда в консоли Jenkins печатается как

curl -u XX:XX --data status=browser&cmd=createPage&label=XXXX&title=XXX&parentPath =/etc/replication/agents.author&template=/libs/cq/replication/templates/agent http://5XXXX:4502/bin/wcmcommand

Обратите внимание, что двойные кавычки "" отсутствуют.

Мне нужно сохранить двойные кавычки после --data в этой команде. Как мне это сделать? Я попытался использовать косую черту, но это не сработало.

Приветствия

1 Ответ

0 голосов
/ 14 июня 2019

Чтобы расширить мой комментарий, быстрый тест показал его случай.

Вам нужно дважды убежать: один раз за кавычку для раковины с косой чертой, и один раз - с косой чертой для самого шпунта.

node() {
    sh 'echo "asdf"'
    sh 'echo \"asdf\"'
    sh 'echo \\"asdf\\"'
}

Результат

[Pipeline] {
[Pipeline] sh
+ echo asdf
asdf
[Pipeline] sh
+ echo asdf
asdf
[Pipeline] sh
+ echo "asdf"
"asdf"
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...