我有包含此脚本的 sendmail
文件 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();
关于java - 从 java 运行 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35713956/