对于这个非常简单的工作流程:
env.FOO = 42
node {
sh "echo $FOO"
}
我收到以下错误:
Running: End of Workflow
groovy.lang.MissingPropertyException: No such property: FOO for class: WorkflowScript
如何在工作流程shell步骤中访问环境变量?
答案 0 :(得分:5)
原因是使用双引号时,Groovy的字符串插值会启动并查找FOO的工作流范围变量。
修复使用单引号:
sh 'echo $FOO'
另请注意,您可以在带双引号的脚本中使用工作流变量:
def FOO = 43
node {
sh "echo $FOO"
}
这将在运行脚本之前扩展$FOO
的值。
答案 1 :(得分:5)
我遇到了需要混合插值的问题。脚本的一部分在之前被插值,并且脚本的一部分在插值期间被插入。使用反斜杠来逃避在运行期间插入的变量的技巧:
def FOO = 42
node {
sh """
BAR = "hello $FOO"
echo \$BAR
"""
}
因此在脚本运行之前会扩展$ FOO,并且在脚本运行期间会扩展\ $ BAR。