在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()方法的参数)。