如何在Jenkinsfile管道中转义此sed命令?

问题描述 投票:1回答:1

我正在做一个简单的替换,这在命令行上工作正常:

sed "s/pub Url =.*/pub Url = 'https:\/\/example.com:3207';/g" myfile.ts

我正在尝试在Jenkins文件中运行它,并且像40版本之后我无法获得正确的转义引用。

很确定它看起来像这样:

sh 'sed \\"s/pub Url =.*/pub Url = \\'https:\\\/\\\/example.com:3207\\';/g\\" myfile.ts'

然而,这会导致以下错误:

WorkflowScript: 4: unexpected char: '\' @ line 4, column 49. ub Url =.*/pub Url = \\'https:\\\/\\\/ex

我觉得我已经尝试过几十种变种,但没有任何效果。

这是我遇到的最常见错误之一:它指向逃避问题

sed:-e表达式#1,char 1:未知命令:`“'

我真的只需要一个管道专家,可能会看到我做错了什么,知道在哪里引用它。

正如这里所说:https://gist.github.com/Faheetah/e11bd0315c34ed32e681616e41279ef4这在管道文件中对抗这种类型的东西并不罕见,它似乎只是反复试验。

jenkins sed jenkins-pipeline
1个回答
0
投票

经过多次试验和错误后,这很有效。

看起来我必须在命令周围使用三重单引号。好东西我不需要插值!

sh '''sed \"s/pub Url =.*/pub Url = \\'https:\\/\\/example.com:3207\\';/g\" afile.txt'''

希望这对未来的人有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.