来自java运行的Bash实时输出

时间:2015-08-24 13:26:37

标签: java bash

我有以下bash脚本,example.sh有一些代码行。要重现我需要的东西,让我们说我在脚本中有以下几行:

#!/bin/bash
echo First part of program
sleep 3
echo Second part of program

所以,当我直接从终端运行时,我将第一部分打印到屏幕上(程序的第一部分)然后等待3秒钟,之后我在屏幕上显示下一部分(程序的第二部分)。当我在java中运行它时,我执行scipt,等待3秒然后我将两个部分打印在屏幕上。有没有办法获得与从终端运行时相同的效果?

EDIT! 这是我的代码:

 public void executeCommand(String command) {
    String line;
        StringBuffer output = new StringBuffer();
        Process p;

    try {
        p = Runtime.getRuntime().exec(command);
        p.waitFor();
        BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
        line = "";           
        while ((line = reader.readLine())!= null) {
            output.append(line + "\n");
        }
        setOutput(output.toString());
        output = new StringBuffer();
        BufferedReader error = new BufferedReader(new InputStreamReader(p.getErrorStream()));
        line="";
        while ((line = error.readLine())!= null) {
            output.append(line + "\n");
        }
        setError(output.toString());

    } catch (Exception e) {
        e.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:0)

如果您使用GetQueuedCompletionStatus - 类启动脚本,则可以使用例如以下内容获取脚本的输出:

Process

必须立即输出。