${env.VAR}、${VAR} 或 $VAR 定义 Jenkins 声明性管道环境变量的方式有什么区别?

Whats is the difference between ${env.VAR}, ${VAR} or $VAR way of defining Jenkins declarative pipeline env varaibles?

我见过在 Jenkins 声明式管道中引用变量的不同方式。我想知道以下几种引用变量的方式是否有区别?

${env.VAR}
${VAR}
$VAR 

"${VAR}""$VAR" 是等价的。您使用大括号将变量名称与您要插入变量的字符串的其余部分分开,以确保解释器不会读取比您想要的更多的变量名称。有关详细信息,请参阅 http://docs.groovy-lang.org/latest/html/documentation/#_string_interpolation。让我证明一下。

考虑以下片段:

VAR="foo"
"$VARbar"

这将出错,因为 VARbar 在此范围内不是有效变量。

但如果你尝试:

VAR="foo"
"${VAR}bar"

,然后如预期的那样得到“foobar”。

现在对于 env.VAR 表格,我仍然无法找到有什么区别的确凿证据。我认为 Jenkins 会自动将所有全局变量视为 ENV 变量,类似于 Make 和 Bash 脚本的工作方式,但我希望看到此行为的实际参考。 ~懒得好好测试了~