2

我在 linux 中使用下面的 shell 代码我希望它在 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 中由“运行时”类处理。在这里Runtime example java 你可以找到一个如何做到这一点的例子

较新的方法将使用 ProcessBuilder 类

于 2012-05-03T08:52:36.393 回答
0

如果我理解正确的话,你想和这个 shell 命令做同样的事情,但是在纯 Java 中,而不是通过 Java 运行它。端口的优点之一是便携性。

我认为您希望JavaMail进行邮件访问。我不是这个 API 的专家,但我在一个小型处理程序中使用它来展示它的用法:电子邮件草图

然后你需要过滤掉结果并隔离出你想要的部分,这并不难。

于 2012-05-04T08:56:40.010 回答