Jenkins scripted pipeline嵌套环境变量无法解析该如何处理?
Jenkins Scripted Pipeline 嵌套环境变量引用解决方案
问题根因
变量未解析的核心原因是Groovy字符串插值规则的误用:
- Groovy中
'''(三重单引号)包裹的是纯字面量字符串,不会解析内部的${}占位符 - 只有
"""(三重双引号)包裹的字符串,才会触发Groovy层面的变量插值替换
解决方案
把env.intern赋值时使用的三重单引号替换为三重双引号,即可在Groovy运行阶段完成env.test值的注入:
// 修正后的代码片段 stage('build') { env.test = "TESTA" // 改用三重双引号触发Groovy变量插值 env.intern = """ TEST = "${env.test}" """ sh ''' echo $intern printenv ''' }
运行后env.intern的内容就会是TEST = "TESTA",符合预期。
拓展说明(按需选择)
如果你的需求是把变量占位符留到Agent节点的Shell执行阶段再解析,不需要在Groovy层插值,可以使用Shell变量语法,保持三重单引号即可:
env.intern = ''' TEST = "$test" ''' // Shell执行时会自动读取当前环境的test变量值完成替换
注意:如果在三重双引号场景下需要保留
$字符原样输出,需要用反斜杠转义:\$
内容的提问来源于stack exchange,提问作者Someone2
相关产品推荐
相关产品推荐

