与Jenkins的Groovy String连接问题

时间:2015-07-30 16:40:53

标签: groovy jenkins

我有一个非常简单的Groovy脚本:

--cc1 sycl --cc2 gcc --cc1opts ... --cc2opts ...

当我在Jenkins脚本控制台中输入并执行脚本时,我得到了预期的结果:

String test = "";
[0, 1, 2, 3, 4].each {test += it.toString()}
return test

然而,当我用curl执行相同的脚本时,我得到了其他的东西:

Result: 01234

有没有人知道这种差异可能来自哪里?

1 个答案:

答案 0 :(得分:1)

不确定出现了什么问题,但改为显式字符串对我有用:

curl --show-error -d 'script=test="";[0,1,2,3,4].each{test = "${test}${it}"}; return test' http://my/domain/jenkins/scriptText
Result: 01234

打破你的榜样,并添加适当的调试:

$ curl --show-error -d 'script=test="";[0,1,2,3,4].each{test += it.toString(); println test}; return test' http://my/domain/jenkins/scriptText
0
1
2
3
4
Result: 4

所以测试没有被添加为字符串。使用GStrings直接将其整理出来。

另一种方法是使用注入,尽管它仍在使用gstrings:

$ curl --show-error -d 'script=test=[0,1,2,3,4].inject("") {acc, val -> "${acc}${val}"}; return test' http://my/domain/jenkins/scriptText
Result: 01234