Groovy初学者で困っております...
task compile << { println 'We are doing the compile.' } compile.doFirst { def bool = ps aux | grep "プロセス名" | grep -v grep | wc -l if (bool) { throw new StopExecutionException() } }
上記のようにps aux | grep "プロセス名" | grep -v grep | wc -l
プロセスを実行中かどうかを判断し、もし起動プロセスが無い場合にはtask compile
の中の処理をスキップしたいと考えています。
しかしどのような書き方をすればシェルコマンドから値が取り出せるのかがわかりません。
初歩的なことで大変申し訳ないのですがどのようにすれば取得できるかご教示いただければ幸いです。
また、もしももっと良い書き方等ありましたらご指摘いただければ嬉しいです...申し訳ありませんがよろしくお願いいたします。
追記
compile.doFirst { def bool = 'ps aux'.execute() | 'grep hoge'.execute() | 'grep -v grep'.execute() | 'wc -l'.execute() if (bool.text == "0") { throw new StopExecutionException() } }
上記のように.execute()でシェルコマンドの実行は上手くいったのですがif文が上手く動いてくれません。
Groovyではこのようなif文の書き方はダメなのでしょうか...?
追記
def process = "ps aux | grep \"プロセス名\" | grep -v grep | wc -l".execute(); println '確認' println process.getText()
上記のようにしたところコンソールには
>>>確認 >>>
のように表示されます。process.getText()は空のようです。
コンソールに直接 ps aux | grep \"プロセス名\" | grep -v grep | wc -l
を打ち込むと
プロセス起動時には 2
が返り プロセスをkillした状態だと 0
が返ります
##バージョン情報
Groovy 2.4.15
java 1.8.0_202
追記
回答1件
あなたの回答
tips
プレビュー