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

Jenkins Pipeline中Shell变量使用报错问题排查

Jenkins Pipeline Shell脚本变量执行报错解决方案

问题原因

你遇到的MissingPropertyException是因为Groovy会自动解析双引号字符串中的${}变量。在原始代码里,echo "${pipelineScriptVar}"中的${pipelineScriptVar}被Groovy当成了自身的绑定变量,而非Shell的环境变量,Groovy找不到该变量就抛出了错误。

解决方案

有两种简单的修复方式:

方式1:转义Shell变量的$符号

在Groovy的三重双引号字符串中,用\$转义Shell变量的$,阻止Groovy解析它,让Shell自行处理变量:

pipeline{
    agent any
    stages{
        stage('print Vars'){
            steps{
                script{
                    String script = """ 
                    export pipelineScriptVar='This is a var'
                    echo "\${pipelineScriptVar}" 
                    """
                    sh script
                }
            }
        }
    }
}

方式2:使用Groovy原始字符串(三重单引号)

Groovy的三重单引号字符串不会对内部的任何变量进行插值,直接将完整脚本传给Shell执行:

pipeline{
    agent any
    stages{
        stage('print Vars'){
            steps{
                script{
                    String script = ''' 
                    export pipelineScriptVar='This is a var'
                    echo "${pipelineScriptVar}" 
                    '''
                    sh script
                }
            }
        }
    }
}

为什么env | grep能正常运行?

因为env | grep "pipeline"中没有${}格式的内容,Groovy不会尝试解析任何变量,脚本直接传给Shell执行,此时Shell已经通过export定义了环境变量,所以能正常查到结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:35:30