You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Pipeline 如何正确使用字符串插值实现三重单引号内变量展开

问题原因

你遇到的是Groovy字符串插值的规则限制:Jenkins Pipeline中,三重单引号'''包裹的是普通纯字符串,不会解析Groovy层面定义的变量,只有三重双引号"""包裹的GString类型才支持Groovy变量插值。

修改方案

你需要做两处调整即可保留原有功能的同时实现foo变量的插值:

  • 将sh步骤的字符串包裹符从三重单引号'''替换为三重双引号"""
  • 所有需要留给shell/容器内部解析的变量(比如你已经在用的ENV_SECRET),$前缀前要加转义符\,避免被Groovy提前解析为空

修改后完整代码如下:

stages {
    stage('test') {
        steps {
            script {
                def foo = "bar"
                sh """
                docker run \
                        --rm \
                        --env secret=\$ENV_SECRET \
                        python:3.8.12 /bin/bash -c \
                        "echo $foo"
                """
            }
        }
    }
}

注意事项

如果你的foo变量包含空格、引号等特殊字符,可以把插值后的变量用单引号包裹,避免shell解析报错,比如将"echo $foo"改为"echo '$foo'"即可。

内容的提问来源于stack exchange,提问作者Kinder9211

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:06:07