繁体   English   中英

从Java运行Shell脚本

[英]Run shell script from java

我有包含此脚本的sendmail文件echo "sample message" | /usr/bin/swaks --to email@gmail.com echo "sample message" | /usr/bin/swaks --to email@gmail.com我想使用以下代码从Java运行它:

ProcessBuilder pb = new ProcessBuilder("sendmail");
Process p = pb.start()

但电子邮件未发送。 怎么了,我该如何解决?

编辑:正在运行./sendmail正在工作,并且电子邮件已发送到我的邮件

我认为问题在于脚本完成之前您的Java应用程序已结束。

尝试这个:

    ProcessBuilder pb = new ProcessBuilder("./sendmail.sh");
    Process p = pb.start();
    BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String readline;
    int i = 0;
    while ((readline = reader.readLine()) != null) {
        System.out.println(++i + " " + readline);
    }

上面的代码应打印出您的命令所打印的内容,这可以帮助您进行调试。 它还具有阻塞的副作用,直到脚本完成为止。

如果这样可行,并且您不关心输出,则可以执行以下操作:

  ProcessBuilder pb = new ProcessBuilder("./test.sh");
  Process p = pb.start();
  p.waitFor();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM