Jenkinsfile嵌套循环问题:如何去除列表项的括号
解决Jenkins Pipeline中列表配对的括号问题
问题出在你用[drink].transpose()的写法上——[drink]会把原drink列表包裹成一个二维列表,所以each循环里的drinks其实是单元素的子列表(比如[water]),输出自然会带括号。
直接简化循环逻辑,遍历drink原列表即可解决:
def food = ["eggs","chips"] def drink =["water","juice","cola"] def meal = [] for (String fd : food){ // 直接遍历drink列表,拿到单个饮料元素 drink.each { dr -> meal.add("Food: ${fd}, Drinks: ${dr}") } } pipeline { agent any stages { stage('Results') { steps { echo 'Results' echo "${meal}" } } } }
运行结果会变成:
Results [Pipeline] echo [Food: eggs, Drinks: water, Food: eggs, Drinks: juice, Food: eggs, Drinks: cola, Food: chips, Drinks: water, Food: chips, Drinks: juice, Food: chips, Drinks: cola] [Pipeline] }
另外,如果你想更贴合Groovy风格,还可以用collectMany简化列表生成,避免手动循环添加元素:
def food = ["eggs","chips"] def drink =["water","juice","cola"] def meal = food.collectMany { fd -> drink.collect { dr -> "Food: ${fd}, Drinks: ${dr}" } } pipeline { agent any stages { stage('Results') { steps { echo 'Results' echo "${meal}" } } } }
这个写法更简洁,最终效果和手动循环完全一致。
内容的提问来源于stack exchange,提问作者TopTux
相关产品推荐
相关产品推荐

