您的代码是正确的,我相信您不会收到异常,如果您使用进行阅读
proc.getErrorStream(),则不会得到任何东西。
已经说过,现在命令是100%以这种方式执行,这是因为您正在回显某些内容,需要使用来将其读回
BufferedReader。
检查以下示例,该示例将成功创建一个名目录并打印您正在回显的内容。为了将其放入日志文件,恐怕您可以使用“>”来完成它,您可能必须使用一些编辑器命令或使用Java创建文件。
底线:
Runtime.getRuntime().exec("command")是从Java执行Unix命令或脚本的正确且已定义的方法,并且有效。test.sh
#!/bin/bashecho "hola"mkdir stackOverflow
Test.java
import java.io.*;public class Test { public static void main(String[] args) throws Exception { try { String target = new String("/home/hagrawal/test.sh");// String target = new String("mkdir stackOver"); Runtime rt = Runtime.getRuntime(); Process proc = rt.exec(target); proc.waitFor(); StringBuffer output = new StringBuffer(); BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream())); String line = ""; while ((line = reader.readLine())!= null) { output.append(line + "n"); } System.out.println("### " + output); } catch (Throwable t) { t.printStackTrace(); } }}


