【发布时间】:2019-08-12 22:35:04
【问题描述】:
在 jenkins-pipeline 中,我正在尝试使用 SED 将以下行附加到文件末尾。
sh "sed -i '\$ s/\$/ public_file=\\/var\\/lib\\/jenkins\\/workspace\\/test-project\\ ansible_ssh_common_args='-o StrictHostKeyChecking=no' /' file.txt"
但我不知道如何在我的 Jenkins 文件中转义以下行以使其正常工作。
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
我已经尝试过以下方法,它适用于 katacoda 游乐场,但不适用于 jenkins 管道。
'"'"'-o StrictHostKeyChecking=no'"'"' /' file.txt
【问题讨论】:
-
我对jenkins-pipeline一无所知,但如果你没有使用它,我会建议
cat >>yourfile <<'EOF',然后你要附加的行,然后是包含EOF的行,作为 100% 有效的解决方案。 -
也就是说,如果你去掉
-o之后和选项之前的空格,那么你根本不需要引号!也就是说,ansible_ssh_common_args=-oStrictHostKeyChecking=no应该是完全等价的。 -
请注意,如果您要查找的模式包含
/,您可以为 sed 使用备用分隔符。例如sed -e 's@/some/path/@/replacement@g。比逃避/要干净得多
标签: bash jenkins-pipeline quotes