java 同步获取 shell 脚本输出框架
时间: 2023-09-06 20:04:36 浏览: 46
在Java中,可以使用`ProcessBuilder`类来执行shell脚本,并获取其输出结果。
首先,需要创建一个`ProcessBuilder`对象,并将要执行的shell命令传递给它。然后,可以使用`start()`方法来启动该进程,并获取它的输入、输出和错误流。
```java
ProcessBuilder processBuilder = new ProcessBuilder("sh", "/path/to/shell/script.sh");
try {
Process process = processBuilder.start();
// 获取进程的输入流
InputStream inputStream = process.getInputStream();
// 将输入流转换为字符流
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
// 使用BufferedReader按行读取输入流的内容
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line;
while ((line = bufferedReader.readLine()) != null) {
// 处理每一行输出
System.out.println(line);
}
// 等待进程执行完成
int exitCode = process.waitFor();
if (exitCode == 0) {
// 进程正常退出
System.out.println("执行成功");
} else {
// 进程异常退出
System.out.println("执行失败");
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
```
上述代码创建了一个`ProcessBuilder`对象,并指定要执行的shell脚本的路径为`/path/to/shell/script.sh`。然后,启动进程并获取其输入流。通过使用`InputStreamReader`和`BufferedReader`,我们可以按行读取进程的输出内容,并对每一行进行处理。
最后,使用`process.waitFor()`方法等待进程执行完成,并获取其退出码。如果退出码为0,表示进程正常退出;如果退出码不为0,表示进程异常退出。
通过上述方法,我们可以在Java中同步获取shell脚本的输出内容。