2008-12-19 75 views

回答

20

只是把我的头顶部可能不是你做了一下自我布线:

def printErr = System.err.&println 
printErr("AHHH") 

但这是有点手动

+1

甚至可以重新定义println:(`def println = System.err。&println`) - 在脚本开始处有用,该脚本通过`foo.write(System.in)`` – sfussenegger 2010-02-12 10:58:38

14

Groovy中可以访问JRE:

System.err.println "goes to stderr" 

虽然有可能是一个更Groovy的田间路...

+0

是的,我希望有一个groovyish的方式。 – timdisney 2008-12-19 19:26:28

1

如果你只是想短些打字,这里有两个选项。首先,你可以导入java.lang.System中,只要你喜欢什么,特别是短的东西,如“SYS”:

import java.lang.System as sys 
sys.err.println("ERROR Will Robinson") 

其次,你可以指定System.err的流给一个变量,并使用该变量从那时起作为System.err的别名,如:

err = System.err 
err.println("ERROR again Will Robinson") 

这有可能的优势在于System.err的所有功能都可以访问,所以你不必每一个单独线了(例如err.print, err.println等)。

希望有一个标准的Groovy方式,因为特殊的重命名可能会让阅读代码的人感到困惑。

19

的另一个相当紧凑的替代是这样的:

System.err << "Want this to go to stderr" 

或者你可以在你的脚本的顶部添加此

def err = System.err 
... 
err << "Want this to go to stderr" 

这就是我现在在做我的常规shell脚本

相关问题