2008-12-19 49 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腳本

相關問題