在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
答案 0 :(得分:0)
使用"
来包装sed命令,然后您可以直接在命令中使用'
而不必对其进行转义。
使用@
,但将/
用作sed s
命令的定界符,则无需转义出现在文件路径中的/
即可推荐简洁明了。
sed -i "\$ s@\$@ public_file=/var/lib/jenkins/workspace/test-project ansible_ssh_common_args='-o StrictHostKeyChecking=no' @" file.txt
答案 1 :(得分:0)
在bash
中,您不能在单引号内转义单引号。
请参见bash manual page:
将字符括在单引号中可保留引号内每个字符的字面值。即使在前面加上反斜杠,也不能在单引号之间引起单引号。
您可以使用双引号代替;然后根据需要逃避它们。然后,您可以在其中使用单引号,而无需进一步转义。