从Java Synchronously运行shell脚本

use*_*300 9 java bash shell synchronous

我试图从Java执行Bash Shell脚本,并使用这段代码运行良好.

public void executeScript() {
    try {
        new ProcessBuilder("myscript.sh").start();
        System.out.println("Script executed successfully");
    } catch (IOException e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码异步运行.但我想要实现的是同步执行代码.我希望Java进程等到脚本执行完成后再执行下一批代码.

总而言之,我希望在批处理文件("myscript.sh")完成执行执行"打印语句 - 成功执行脚本" .

谢谢

Ell*_*sch 18

你要等待进程结束,这是WAITFOR()这样的

public void executeScript() {
  try {
    ProcessBuilder pb = new ProcessBuilder(
      "myscript.sh");
    Process p = pb.start();     // Start the process.
    p.waitFor();                // Wait for the process to finish.
    System.out.println("Script executed successfully");
  } catch (Exception e) {
    e.printStackTrace();
  }
}
Run Code Online (Sandbox Code Playgroud)