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

Groovy读取Unix进程输出时如何去除换行符?

解决Groovy脚本中进程输出拼接时的换行问题

这个问题我之前碰到过类似的坑!核心原因是你通过execute().text获取的Unix命令输出,默认会带上换行符(比如\n或者\r\n),而你手动赋值的字符串"2017"没有这个隐藏的换行字符,所以拼接后的结果会出现换行拆分的情况。

下面给你几个简单有效的解决方案:

方法一:用trim()去除首尾空白字符

这是最直接的方式,trim()会移除字符串开头和结尾的所有空白字符(包括换行、空格、制表符等),完美解决换行问题:

def text = ['bash', '-c', command_to_execute].execute().text.trim()
def concatanated_text = "${var1}.${var2}.${text}.full.zip"

方法二:精准替换换行符(保留其他首尾空格)

如果你需要保留输出首尾的空格,只是要去掉换行符,可以用正则替换:

def text = ['bash', '-c', command_to_execute].execute().text.replaceAll(/[\n\r]/, '')
def concatanated_text = "${var1}.${var2}.${text}.full.zip"

正则表达式[\n\r]会匹配所有换行相关的字符(包括Unix的\n和Windows的\r\n),将它们替换为空字符串。

验证示例

你可以用这段代码测试效果,模拟带换行的命令输出:

// 模拟命令输出带换行的情况(echo默认会输出换行)
def command_to_execute = 'echo 2017'
def text = ['bash', '-c', command_to_execute].execute().text
println "原始text内容(带换行):'${text}'"
println "原始text长度:${text.length()}" // 输出4,因为包含"2017\n"

// 用trim处理后
text = text.trim()
println "处理后text内容:'${text}'"
println "处理后text长度:${text.length()}" // 输出3,只剩"2017"

// 拼接测试
def var1 = 'file'
def var2 = 'name'
def concatanated_text = "${var1}.${var2}.${text}.full.zip"
println "拼接结果:${concatanated_text}" // 输出file.name.2017.full.zip

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 22:07:34