You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins scripted pipeline迭代列表时echo输出多余字符如何解决

问题原因
  • 你将List类型的对象直接赋值给了env.myJobs,Jenkins中所有env下的变量都会被自动转换为字符串类型,原生List执行toString()后会生成[元素1, 元素2]格式的字符串,自带前后方括号、元素之间自带, 分隔符
  • 你后续对已经转为字符串的内容调用tokenize(',')拆分,得到的元素自然会携带残留的方括号和多余前导空格
解决方案

方案1:不需要跨节点/跨阶段传递列表时,直接用普通变量存储

不要把列表放到env中,直接遍历原生List即可,无需额外拆分处理:

node {       
    // 用普通变量存储列表,不走env转换
    def myJobs = [ "abc", "def"]
    
    stage('Regression') { 
        echo "Test"            
        build_jobs(myJobs)
    }
}

def build_jobs(list) {
    // 直接遍历原生列表
    list.each { item ->
        echo "${item}"
    }
}

方案2:确实需要存入env跨场景使用时,先转成纯分隔字符串

存到env之前先把列表拼接为无括号的逗号分隔字符串,拆分后补一下trim操作去掉空格即可:

node {       
    // 转成纯逗号分隔字符串再存入env
    env.myJobs = [ "abc", "def"].join(',')
    
    stage('Regression') { 
        echo "Test"            
        build_jobs(env.myJobs)
    }
}

@NonCPS
def build_jobs(jobStr) {
    jobStr.tokenize(',').each { item ->
        // 去掉前后多余空白
        echo item.trim()
    }
}

内容的提问来源于stack exchange,提问作者Fisher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:54:01