在Groovy中如何为git tag列表的每行版本号后添加逗号?
解决方案
方案1:Shell层直接处理
使用sed命令仅为除最后一行外的所有行末尾添加逗号,既保留每行单独输出的格式,也不会在最后一个版本号后多余加逗号:
def tagversion = sh(script:""" git tag --sort=v:refname | sed '\$!s/\$/,/' """, returnStdout:true).trim()
命令逻辑说明:
\$!表示匹配除最后一行之外的所有行(Groovy字符串中$为特殊字符需要转义,因此写作\$)s/\$/,/表示在行尾位置追加逗号
方案2:Groovy层处理(适配复杂场景更灵活)
先拿到原始换行分隔的标签列表,在Groovy代码中做字符串处理,逻辑可控度更高:
// 先获取原始标签列表 def rawTags = sh(script:""" git tag --sort=v:refname """, returnStdout:true).trim() // 按换行分割为标签数组 def tagList = rawTags.split('\n') // 遍历处理:前N-1个元素末尾加逗号,最后一个元素保持不变,再用换行拼接 def processedTags = tagList.indexed().collect { index, tag -> index == tagList.size() - 1 ? tag : "${tag}," }.join('\n')
最终processedTags变量存储的就是符合要求的输出内容。
内容的提问来源于stack exchange,提问作者user2995458
相关产品推荐
相关产品推荐

