如何从Java运行.sh文件?

时间:2013-03-15 09:09:31

标签: java shell

我需要从我的Java代码运行.sh文件而不传递任何参数。我已经尝试用

做了
Runtime.getRuntime().exec("src/lexparser.sh");

ProcessBuilder pb = new ProcessBuilder("src/lexparser.sh");
Process p = pb.start();

上述两种方法均无效。有没有其他方法可以运行Java形式的.sh文件?

2 个答案:

答案 0 :(得分:9)

ProcessBuilder pb = new ProcessBuilder("src/lexparser.sh", "myArg1", "myArg2");
 Process p = pb.start();
 BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
 String line = null;
 while ((line = reader.readLine()) != null)
 {
    System.out.println(line);
 }

答案 1 :(得分:3)

有两件事容易错过:

  1. 路径和CWD。确保找到可执行文件的最简单方法是提供绝对路径,例如/usr/local/bin/lexparser.sh

  2. 流程输出。您需要读取过程输出。输出被缓冲,如果输出缓冲区已满,则生成的进程将挂起。