Bash管道输出在groovy和终端之间是差异的

时间:2014-11-17 09:32:21

标签: shell groovy

存在“ex / try.groovy”,我尝试:

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

它没有输出任何东西

但是当我尝试跟随时,它会输出“try.groovy”

roroco@roroco ~/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

我的问题如何使groovy输出与终端相同

1 个答案:

答案 0 :(得分: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