Process proc1 ='sh -c ps -ef'.execute();
Process proc2 ='sh -c grep sleep.sh '.execute();
Process proc3 ='sh -c grep -v grep '.execute();
Process proc4 ='sh -c awk sleep.sh '.execute();
Process all = proc1 | proc2 | proc3 | proc4;
// I tried this too and this didnt work
//println( [ 'sh', '-c', 'ps -ef | grep "sleep.sh" | grep -v "grep" | awk "sleep.groovy" ' ].execute().text )
//also tried without the awk
println all.text;
さて、私がやろうとしているのは、私が作成したシェルスクリプト(sleep.sh)をpsすることです[一定期間スリープするだけです]。それを行う方法がよくわかりません。これが一番の推しでした^^
結果:
-sh-3.2$ ./callGroovy.sh testSleep.groovy
-sh-3.2$
何も出力せず、何も与えません (callGroovy は、Groovy スクリプトを呼び出すために使用するシェル スクリプトです) パイプされたコマンドを実行すると、awk 以外は引き続き動作します。
-sh-3.2$ ps -ef | grep "sleep.sh" | grep -v "grep"
wasadmin ***** ***** 0 **:** pts/1 **:**:** /bin/bash ./sleep.sh
(*はすべて数字です)
grep と ps だけでスクリプトを試しても、この出力は得られません。助言がありますか?..PS また、groovy スクリプトで引用符の有無にかかわらず試してみました。それが違いを生むとは思わなかったが、試してみる価値がある