${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 脚本的工作方式,但我希望看到此行为的实际参考。 ~懒得好好测试了~
我见过在 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 脚本的工作方式,但我希望看到此行为的实际参考。 ~懒得好好测试了~