Jenkinsfile中的sed语句

时间:2019-11-16 06:31:09

标签: jenkins groovy sed jenkins-pipeline sh

我正在尝试运行sed命令

sed -i "5s/.*jenkins_build.*/\"jenkins_build\": \"$BUILD_NUMBER\",/" ./package.json

在管道中的Jenkins文件中,这是我的Jenkins语句;

sh 'sed -i \\"5s/.*jenkins_build.*/\\\\\\"jenkins_build\\\\\\": \\\\\\"$BUILD_NUMBER\\\\\\",/\\" ./package.json'

我认为我已经按照此处所述正确地转义了一切

https://gist.github.com/Faheetah/e11bd0315c34ed32e681616e41279ef4

这是Jenkins控制台中的输出;

+ sed -i "5s/.*jenkins_build.*/\"jenkins_build\": \"23\",/" ./package.json
  sed: -e expression #1, char 1: unknown command: `"'

以上命令在终端中运行正常。我可能做错了什么?

编辑:使用摘要生成器生成脚本,现在可以使用!

https://jenkins.io/doc/book/pipeline/getting-started/#snippet-generator

这是它的输出。

        sh label: '', script: 'sed -i "5s/.*jenkins_build.*/\\"jenkins_build\\": \\"$BUILD_NUMBER\\",/" ./package.json'

1 个答案:

答案 0 :(得分:1)

请考虑使用单引号将sed程序包装起来。它将减少逃脱反斜杠的需要。

sed -i '5s/.*jenkins_build.*/"jenkins_build": "'$BUILD_NUMBER'",/' ./package.json

免责声明:我无权访问詹金斯-无法测试