Groovy 添加了使执行 shell 相当容易的execute方法;String
execute
String
println "ls".execute().text
但如果发生错误,则没有结果输出。 有没有一种简单的方法可以同时输出标准错误和标准? (除了创建一堆代码;创建两个线程来读取两个输入流,然后使用父流等待它们完成然后将字符串转换回文本?)
有类似的东西会很好;
def x = shellDo("ls /tmp/NoFile") println "out: ${x.out} err:${x.err}"
好的,自己解决了;
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