2011-11-25 149 views
2

我正在寫一個groovy腳本,從行或從管道採取參數。管道到groovy腳本輸入

首先,訪問管道或參數表是不同的:從args可變

    • 您訪問ARGS您通過System.in.text

    的接入管道等等一切工作正常在我的劇本

    但是

    當我遠程運行腳本(即groovy http://mysite.com/myscript.groovy),有時候管道不工作,即管道中沒有任何東西(System.in.text是空的),但有時它工作。

    我設法解決這個拖延閱讀System.in 300毫秒(即sleep 300命令)

    我不知道如果我錯過了一些在讀的管道或應報告bug莫名其妙

    示例腳本:https://github.com/fix/groovy-spark/blob/master/Spark.groovy

  • +0

    您是否嘗試過使用'System.in.eachLine()'? – Armand

    +1

    是的同樣的問題實際上,感謝提示 – fixitagain

    回答

    1

    嘗試像這樣包裝:

    BufferedReader Sin = new BufferedReader(new InputStreamReader(System.in)) 
    

    ...來自Java API文檔。

    然後繼續像往常一樣Sin.text

    +0

    不幸的是,當管道中沒有任何東西時,它也會掛起 – fixitagain

    +1

    檢查'Si​​n.ready()'是否爲真。儘管如此,請繼續閱讀。完成循環時,它是錯誤的。我在這裏爲自己的模板創建了一個示例:https://github.com/sarnobat/getopts –

    0
    def input = System.in.newReader().readLine()