2

Linuxで以下のシェルコードを使用しています。Javaで作成したい.JAVAでこのコマンドを呼び出したい

mailq | grep -B1 -i temporarily | grep -iv deferred | \
egrep -i 'jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec' | \
awk -F" " '{print $1}' | awk '{print  substr($0,10,14)}'

mailq コマンドは、キューに入れられたメール メッセージをそれぞれの ID とエラーとともに表示します。上記のコマンドのように、一時的に無効になっているメッセージを含むメッセージを探し、その ID が * *09089 にある上記のメッセージを取得します。このように月をチェックし、その ID の最後の 5 文字を出力するよりも

4

4 に答える 4

3
  String cmd = "mailq | grep -B1 -i temporarily | grep -iv deferred | "
              +"egrep -i 'jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec' |" 
              + " \'{print $1}\' | awk \'{print  substr($0,10,14)}\'";
    try
    {
      ProcessBuilder pb = new ProcessBuilder("bash", "-c", cmd);
      Process p = pb.start();
      p.destroy();
    }
    catch (Exception e)
    {e.printStackTrace();}
于 2012-05-03T08:50:31.480 に答える
3

ここ http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

于 2012-05-03T08:51:11.403 に答える
0

私の理解が正しければ、このシェル コマンドと同じことを、Java から実行するのではなく、純粋な Java で実行する必要があります。ポートの利点の 1 つは移植性です。

JavaMailにメール アクセスをさせたいと思います。私はこの API の専門家ではありませんが、小さな処理プログラムで使用して、その使用方法を示しました: Email sketch

次に、結果をフィルターで除外し、必要な部分を分離する必要がありますが、これはそれほど難しくありません。

于 2012-05-04T08:56:40.010 に答える
0

一般に、この種の問題は Java の「Runtime」クラスによって処理されます。ここでRuntime example java を実行する方法の例を見つけることができます

ただし、新しいアプローチは ProcessBuilder クラスを使用することです

于 2012-05-03T08:52:36.393 に答える