下面是我的Jenkins文件中的一个片段-
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后面的双引号。我该怎么做呢?我试着使用正斜杠,但不起作用。
干杯
发布于 2019-06-14 18:17:04
为了扩展我的评论,一个快速测试揭示了它的情况。
您需要转义两次,一次是用斜杠引用shell,另一次是用斜杠引用groovy本身。
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发布于 2020-05-03 04:06:11
经过长时间的努力和谷歌搜索,这就是我在类似的用例中的工作:
sh("ssh root@my.server.com \"su user -c \\\"mkdir ${newDirName}\\\"\"")发布于 2021-05-06 04:17:16
我在变量中有双引号,所以转义单引号对我很有效:
sh "git commit -m \'${ThatMayContainDoubleQuotes}\'"https://stackoverflow.com/questions/56583357
复制相似问题