Jenkins字符串参数处理异常:collect遍历字符而非元素问题排查
问题原因
你当前的suite_file_name是一个完整的字符串(比如"capacity/pool_capacity.suite capacity/volume_capacity.suite"),而非包含两个元素的列表。Groovy中对字符串调用collect方法时,会把字符串当作字符数组遍历,所以每个字符都会被单独处理,最终出现给每个字符加前缀的错误结果。
解决方案
先把原始字符串按空格分割成列表,再执行collect和join操作:
// 先按空格分割字符串为列表 def suiteList = suite_file_name.split(/\s+/) // 对列表元素添加前缀并拼接 suite_file_name = suiteList.collect{ "-f suites/$it" }.join(" ")
也可以合并为一行代码:
suite_file_name = suite_file_name.split(/\s+/).collect{ "-f suites/$it" }.join(" ")
验证效果
执行修正后的代码后,会得到你期望的输出:
-f suites/capacity/pool_capacity.suite -f suites/capacity/volume_capacity.suite
内容的提问来源于stack exchange,提问作者nadavlevin
相关产品推荐
相关产品推荐

