1. ホーム
  2. groovy

[解決済み] Groovyによるシェルコマンドの実行

2022-04-18 22:39:55

質問

Groovyでは execute メソッドを String を使えば、シェルの実行がかなり簡単になります。

println "ls".execute().text

が、エラーが発生した場合は、結果の出力はありません。 標準エラーと標準アウトの両方を簡単に取得する方法はありますか? (両方の入力ストリームを読むために 2 つのスレッドを作成し、親ストリームを使用してそれらが完了するのを待ち、文字列をテキストに変換する) というコードの束を作る以外に?

みたいなのがあるといいんですけどね。

 def x = shellDo("ls /tmp/NoFile")
 println "out: ${x.out} err:${x.err}"

解決方法は?

OK、自分で解決しました。

def sout = new StringBuilder(), serr = new StringBuilder()
def proc = 'ls /badDir'.execute()
proc.consumeProcessOutput(sout, serr)
proc.waitForOrKill(1000)
println "out> $sout\nerr> $serr"

が表示されます。

out> err> ls: cannot access /badDir: No such file or directory