我正在尝试运行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'
答案 0 :(得分:1)
请考虑使用单引号将sed
程序包装起来。它将减少逃脱反斜杠的需要。
sed -i '5s/.*jenkins_build.*/"jenkins_build": "'$BUILD_NUMBER'",/' ./package.json
免责声明:我无权访问詹金斯-无法测试