グルーヴィースクリプト入力へのパイプ

私は、行またはパイプからargsを取るグルーヴィーなスクリプトを書いています。

まず第一に、パイプまたはargsにアクセスする方法は異なります。

  • you access args from args variable
  • you access pipe through System.in.text

私のスクリプトではすべてがうまくいきます

しかし

when i run the script remotely (ie groovy http://mysite.com/myscript.groovy), SOMETIMES piping is not working, ie nothing in the pipe (System.in.text is empty), しかし sometimes it works.

System.in の読み込みを300ms遅らせるように修正しました(つまり、 sleep 300 コマンド)

私は読書パイプで何かが恋しいのか、何とかバグを報告しなければならないのだろうか?

Example script: https://github.com/fix/groovy-spark/blob/master/Spark.groovy

2
System.in.eachLine()を使ってみましたか?
追加された 著者 Armand,
はい、同じ問題が実際には、チップのおかげで
追加された 著者 fixitagain,

2 答え

次のようにラップしてみてください:

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

... Java APIのドキュメントから。

Then proceed as usual with Sin.text

1
追加された
Sin.ready()がtrueであることを確認します。それがある間、読書ラインを保つ。 falseのときにループを終了します。ここで私自身のテンプレートの使用例を作成しました: github.com/sarnobat/getopts
追加された 著者 Sridhar-Sarnobat,
残念ながらパイプに何もないときには吊り下げられています
追加された 著者 fixitagain,
def input = System.in.newReader().readLine()
0
追加された