我想从我的Grails应用程序执行svn delete
。我在Grails控制台中测试了以下两项:
"svn delete /usr/share/mydir".execute()
Runtime.getRuntime().exec("svn delete /usr/share/mydir")
在这两种情况下,都将返回
java.lang.Process
的实例,但是不会执行命令(不删除/usr/share/mydir
)。仅当应用程序在Linux(Ubuntu)上运行时,才会发生此行为。如果我在Windows上运行该命令,则该命令确实会执行。
更新
按照蒂姆在注释中的建议,我更改了命令,以便捕获过程输出:
def process = "svn delete /usr/share/mydir".execute()
def out = new StringBuilder()
process.waitForProcessOutput(out, new StringBuilder())
println "$out"
我现在看到失败的原因是:
最佳答案
以下代码对我来说在CentOS上运行良好。
def scriptCom="/folderlocation/shellscript.sh"
println "[[Running $scriptCom]]"
def proc = scriptCom.execute()
def oneMinute = 60000
proc.waitForOrKill(oneMinute)
if(proc.exitValue()!=0){
println "[[return code: ${proc.exitValue()}]]"
println "[[stderr: ${proc.err.text}]]"
return null
}else{
println "[[stdout:$revisionid]]"
return proc.in.text.readLines()
}
关于java - 从Grails应用执行命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11358109/