2014-11-17 32 views
0

存在「EX/try.groovy」之間Diff時,我嘗試:猛砸管道輸出,在Groovy和終端

println "ls -al |grep try".execute(null, new File("/home/roroco/Dropbox/jvs/ro-idea/ex")).text 

它沒有得到任何輸出

但是當我嘗試以下,這將輸出「try.groovy」

[email protected] ~/Dropbox/jvs/ro-idea/ex $ cd /home/roroco/Dropbox/jvs/ro-idea/ex;ls -al |grep try 
-rw-r--r-- 1 roroco roroco 95 Nov 17 17:28 try.groovy 

我的問題是如何使常規輸出相同與終端

回答

2

這裏不能使用|,因爲它是由shell處理的。或者使用sh -c執行或管道自己。見http://groovy.codehaus.org/Process+Management

def p = ['sh', '-c', 'ls /tmp | grep groovy'].execute() 
p.waitFor() 
println p.text 

def p1 = 'ls /tmp'.execute() 
def p2 = 'grep groovy'.execute() 
p1 | p2 
p2.waitFor() 
println p2.text