【问题标题】:how to escape double quotes in jenkins pipeline如何在詹金斯管道中转义双引号
【发布时间】:2021-09-06 06:27:23
【问题描述】:

我有这个 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"}'

我试图用“”转义并使用双双引号,但没有成功。有什么想法吗?

谢谢

【问题讨论】:

  • 反斜杠有效吗? (-var='apiversion={\"$ENV\"=\"$API_VERSION\"}')
  • nope.. 我从字面上用 $ENV 和 $API_VERSION 得到命令,而不是变量 @JeffScottBrown 的值

标签: bash jenkins groovy terraform


【解决方案1】:

您需要使用\ 转义它:
示例:

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

【讨论】:

  • 如果我像这样逃跑,我会得到 $env 和 $api_version 字面意思,我需要 Jenkins 填充这个 vars..@Altaf
  • @HumbertoLantero 我用 `bat echo ` 命令完成了这个,变量被填充了。你是直接调用吗?
猜你喜欢
  • 2017-09-06
  • 1970-01-01
  • 2019-01-09
  • 2018-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
相关资源
最近更新 更多