如何在詹金斯管道中转义双引号

时间:2021-06-22 16:21:08

标签: bash jenkins groovy terraform

我有这个 Jenkins 管道:

sh """ docker container run \
                        --name ssapi-eks-deployer \
                        -e BRANCH=delete\
                        -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
                        -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_KEY \
                        -e ACTION=${params.ACTION} \
                        -e API_VERSION=${params.API_VERSION} \
                        http://docker.image """

此 docker 映像运行具有此选项的脚本:

if [[ $ACTION == "DEPLOY" ]]; then
        echo "=========Deploying EKS ========="
        terraform apply -auto-approve -var-file=project.tfvars -var='apiversion={"$ENV"="$API_VERSION"}'

问题是这个脚本的结果是这样的:

terraform apply -auto-approve -var-file=project.tfvars -var='apiversion={pre=1.0}'

预期的结果是这样的:

terraform apply -auto-approve -var-file=project.tfvars -var='apiversion={"pre"="1.0"}'

我试图用 "" 并使用双双引号转义,但没有成功.. 知道吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您需要使用 \:
对其进行转义 示例:

 bat "terraform apply -auto-approve -var-file=project.tfvars -var='apiversion= {\"${ENV}\"= \"${API_VERSION}\"} ' "