首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jenkins-管道bash命令中避开单引号?

如何在jenkins-管道bash命令中避开单引号?
EN

Stack Overflow用户
提问于 2019-08-12 22:35:04
回答 2查看 9.3K关注 0票数 1

在jenkins-管道中,我试图使用SED将下面的行附加到文件的末尾。

代码语言:javascript
复制
sh "sed -i '\$ s/\$/ public_file=\\/var\\/lib\\/jenkins\\/workspace\\/test-project\\ ansible_ssh_common_args='-o StrictHostKeyChecking=no'  /' file.txt"

但我想不出如何在Jenkins文件中转义下面的一行以使其正常工作。

代码语言:javascript
复制
ansible_ssh_common_args='-o StrictHostKeyChecking=no' 

我已经尝试过以下方法,它在katacoda游乐场工作,但在jenkins管道中不起作用。

代码语言:javascript
复制
'"'"'-o StrictHostKeyChecking=no'"'"'  /' file.txt
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-13 07:56:54

  1. 使用"包装sed命令,然后可以直接在命令中使用',而无需转义它。
  2. 使用@,但是使用/作为sed s命令的分隔符,那么您就不需要转义文件路径中出现的/,从而使整个推荐更加简洁和可读性。
代码语言:javascript
复制
sed -i "\$ s@\$@ public_file=/var/lib/jenkins/workspace/test-project ansible_ssh_common_args='-o StrictHostKeyChecking=no'  @" file.txt
票数 3
EN

Stack Overflow用户

发布于 2019-08-13 12:42:40

bash中,不能在单引号中转义单引号。

巴什手册页

单引号中包含的字符保留引号中每个字符的文字值。单引号之间可能不会出现单引号,即使在前面加上反斜杠时也是如此。

您可以使用双引号,然后根据需要转义它们。然后,您可以在其中使用单引号,而无需进一步转义。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57469069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档