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

时间:2017-12-29 22:44:34

标签: jenkins sed jenkins-pipeline

我正在做一个简单的替换,这在命令行中运行良好:

Javascript

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

非常确定它看起来像这样:

unknown

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

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

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

以下是我遇到的最常见错误之一:指出逃避问题

  

sed:-e表达式#1,字符1:未知命令:`"'

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

如前所述:https://gist.github.com/Faheetah/e11bd0315c34ed32e681616e41279ef4在管道文件中对抗此类内容并不常见,似乎只是反复试验。

2 个答案:

答案 0 :(得分:0)

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

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

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

希望这有助于未来与此斗争的人!

答案 1 :(得分:-1)

要添加更多内容...我在 CLI 中运行正常的 sed -i 's/\_/\//g' abc.txt 命令有问题,但导致 jenkins 中出现 unxpected char \ 错误,所以,我有替换这个:

sed -i 's/\_/\//g' abc.txt 

sed -i "s/\\_/\\//g" abc.txt

从 jenkins 中删除此错误。