我有以下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();
}
}
答案 0 :(得分:0)
如果您使用GetQueuedCompletionStatus
- 类启动脚本,则可以使用例如以下内容获取脚本的输出:
Process
必须立即输出。