小编典典

Groovy 执行 shell 命令

all

Groovy 添加了使执行 shell 相当容易的execute方法;String

println "ls".execute().text

但如果发生错误,则没有结果输出。 有没有一种简单的方法可以同时输出标准错误和标准?
(除了创建一堆代码;创建两个线程来读取两个输入流,然后使用父流等待它们完成然后将字符串转换回文本?)

有类似的东西会很好;

 def x = shellDo("ls /tmp/NoFile")
 println "out: ${x.out} err:${x.err}"

阅读 90

收藏
2022-07-04

共1个答案

小编典典

好的,自己解决了;

def sout = new StringBuilder(), serr = new StringBuilder()
def proc = 'ls /badDir'.execute()
proc.consumeProcessOutput(sout, serr)
proc.waitForOrKill(1000)
println "out> $sout\nerr> $serr"

显示:

out> err> ls: cannot access /badDir: No such file or directory

2022-07-04