输出bash脚本的结果

时间:2012-02-03 09:10:02

标签: java linux

例如,如果我选择运行一个bash脚本来输出(回显)时间,例如CheckDate.sh。我如何从Java运行它,然后在我的Java程序中打印bash脚本的结果(日期)?

3 个答案:

答案 0 :(得分:3)

一种方法是在Process对象中分配脚本执行,并从其输入流中检索脚本输出。

try {
    // Execute command
    String command = "ls";
    Process process = Runtime.getRuntime().exec(command);

    // Get the input stream and read from it
    InputStream in = process.getInputStream();
    int c;
    while ((c = in.read()) != -1) {
        process((char)c);
    }
    in.close();
} catch (IOException e) {
    LOGGER.error("Exception encountered", e);
}

另一种方法是让你的bash脚本在一个文件中写出它的输出,然后从Java中读回这个文件。

祝你好运。

答案 1 :(得分:2)

试试这段代码。

String result = null;
try {
    Runtime r = Runtime.getRuntime();                    

    Process p = r.exec("example.bat");

    BufferedReader in =
        new BufferedReader(new InputStreamReader(p.getInputStream()));
    String inputLine;
    while ((inputLine = in.readLine()) != null) {
        System.out.println(inputLine);
        result += inputLine;
    }
    in.close();

} catch (IOException e) {
    System.out.println(e);
}

答案 2 :(得分:2)

java.lang.Process类用于此类目的。您可以使用(更简单的)java.lang.Runtime.exec函数或(更复杂的)java.lang.ProcessBuilder类在Java中运行外部进程。最后,两者都为您提供了java.lang.Process的实例,您可以调用其getInputStream方法来获取可以从中读取输出的流。

有关更多信息,请参阅Javadoc。