在Java中,可以使用Process
类来执行shell脚本,并判断脚本是否执行结束。下面是一个示例代码,演示了如何执行shell脚本,并判断其是否执行结束。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ShellScriptExecution {
public static void main(String[] args) {
try {
// 创建ProcessBuilder对象,用于执行shell脚本
ProcessBuilder processBuilder = new ProcessBuilder("/bin/bash", "script.sh");
// 设置脚本工作目录
processBuilder.directory(new File("/path/to/script/directory"));
// 启动shell脚本
Process process = processBuilder.start();
// 创建BufferedReader用于读取shell脚本的输出
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
// 读取脚本的输出,并打印到控制台
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 等待脚本执行结束,并获取返回值
int exitCode = process.waitFor();
// 打印脚本的返回值
System.out.println("脚本执行结束,返回值为: " + exitCode);
// 根据返回值判断脚本是否执行成功
if (exitCode == 0) {
System.out.println("脚本执行成功");
} else {
System.out.println("脚本执行失败");
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
在上述示例代码中,我们使用ProcessBuilder
类来创建一个Process
对象,并指定要执行的shell脚本。通过start()
方法启动脚本,并通过getInputStream()
方法获取脚本的输出流。我们可以使用BufferedReader
来读取脚本的输出,并将其打印到控制台。
在脚本执行结束后,我们可以调用waitFor()
方法来等待脚本执行结束,并获取脚本的返回值。根据返回值,我们可以判断脚本是否执行成功。一般情况下,脚本执行成功时返回值为0,失败时返回非零值。
请注意,上述示例代码中的script.sh
是指要执行的shell脚本文件,你需要根据实际情况替换为你的shell脚本文件名。另外,还需要根据实际情况设置脚本的工作目录(即directory()
方法的参数)。