相关疑难解决方法(0)

Groovy执行shell命令

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

println "ls".execute().text
Run Code Online (Sandbox Code Playgroud)

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

有类似的东西会很高兴;

 def x = shellDo("ls /tmp/NoFile")
 println "out: ${x.out} err:${x.err}"
Run Code Online (Sandbox Code Playgroud)

groovy

162
推荐指数
6
解决办法
22万
查看次数

无法捕获 groovy 执行的完整输出

我正在尝试列出 svn 文件夹的内容,其中包含大约 1200 个项目。沿着“在 groovy 脚本中执行外部程序并捕获输出”中的内容,我开发了以下代码

def svnCommand = "svn list ${repoUrl}"
def sout = new StringBuilder()
def serr = new StringBuilder()

Process sproc = svnCommand.execute()
sproc.consumeProcessOutput(sout, serr)
sproc.waitForProcessOutput()
println sout
Run Code Online (Sandbox Code Playgroud)

如果我要运行此脚本,无论我将初始容量设置多高,我总是会得到截断的输出。输出明显被截断,如以下摘录所示

...
SS0D76I0.cpy
SS0D76M0.cpy
SS0D76N0.cpy
SS
Run Code Online (Sandbox Code Playgroud)

关于捕获命令的完整输出有什么建议吗?该脚本在 Windows 机器上运行。

io groovy process processbuilder

2
推荐指数
1
解决办法
2211
查看次数

标签 统计

groovy ×2

io ×1

process ×1

processbuilder ×1