如何在 jenkins-pipeline bash 命令中转义单引号内的单引号
How do I escape a single quote inside single quotes in jenkins-pipeline bash command
在 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
用"
包裹sed命令,这样就可以直接在命令中使用'
不用转义
使用@
,但是/
作为sed s
命令的分隔符,那么你不需要转义出现在文件路径中的/
使整个推荐更加简洁易读。
sed -i "$ s@$@ public_file=/var/lib/jenkins/workspace/test-project ansible_ssh_common_args='-o StrictHostKeyChecking=no' @" file.txt
在bash
中,不能在单引号内转义单引号。
Enclosing characters in single quotes preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash.
您可以使用双引号;然后根据需要逃避他们。然后您可以在其中使用单引号而无需进一步转义。
在 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
用
"
包裹sed命令,这样就可以直接在命令中使用'
不用转义使用
@
,但是/
作为seds
命令的分隔符,那么你不需要转义出现在文件路径中的/
使整个推荐更加简洁易读。
sed -i "$ s@$@ public_file=/var/lib/jenkins/workspace/test-project ansible_ssh_common_args='-o StrictHostKeyChecking=no' @" file.txt
在bash
中,不能在单引号内转义单引号。
Enclosing characters in single quotes preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash.
您可以使用双引号;然后根据需要逃避他们。然后您可以在其中使用单引号而无需进一步转义。