【发布时间】:2019-05-03 09:06:27
【问题描述】:
我有一段代码在我所知道的所有 groovy 解释器中都能完美运行,包括 Jenkins 脚本控制台。然而,当涉及到管道脚本时,它有一个奇怪的行为。
def kvs = ['key1': 'value1', 'key2': 'value2']
println kvs
println kvs.inject(''){ s,k,v -> s+= "{'$k': '$v' } "}
首先,地图的打印方式不同:
-
预期:
[key1:value1, key2:value2] -
得到:
{key1=value1, key2=value2}
然后,更多的问题是,产生的结果大不相同:
-
预期:
{'key1': 'value1' } {'key2': 'value2' } -
得到:
null
这两个结果都是使用以下 groovy 版本获得的:2.4.12。
(虽然,在管道脚本之外,我也尝试了2.4.6 和2.4.15 版本,并且总是得到预期的结果)
请注意,我对解决方法不感兴趣。我只想了解为什么行为会从普通的 groovy 变为管道脚本。
【问题讨论】: