📜  使用参数启动 shell 脚本的 Java 代码 - Java (1)

📅  最后修改于: 2023-12-03 15:22:22.868000             🧑  作者: Mango

使用参数启动 shell 脚本的 Java 代码

在开发中,有时候需要使用 Java 代码启动 shell 脚本并传递参数。下面是一段 Java 代码示例,展示了如何使用参数启动 shell 脚本。

import java.io.IOException;

public class RunShellScript {

   public static void main(String[] args) {

      String scriptPath = "/path/to/your/shell/script.sh";

      try {

         // 构造 ProcessBuilder 实例
         ProcessBuilder pb = new ProcessBuilder(scriptPath, arg1, arg2, arg3);

         // 执行 shell 命令
         Process process = pb.start();

         // 获取输出流并打印
         InputStream inputStream = process.getInputStream();
         BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
         String line;
         while ((line = reader.readLine()) != null) {
            System.out.println(line);
         }

         // 等待执行完成并获取返回值
         int exitValue = process.waitFor();

         // 检查返回值并输出
         if (exitValue == 0) {
            System.out.println("Script executed successfully.");
         } else {
            System.out.println("Script execution failed.");
         }

      } catch (IOException | InterruptedException e) {
         e.printStackTrace();
      }
   }
}

上面代码中的 scriptPath 是指要启动的 shell 脚本的路径。arg1arg2 等是要传递给脚本的参数。

使用 ProcessBuilder 类可以启动一个新的进程并执行指定的命令。start() 方法将命令执行起来,返回一个 Process 对象。我们可以通过这个对象获取命令执行时的标准输出流并输出,也可以使用 waitFor() 方法等待命令执行完成并获取其返回值。

需要注意的是,在执行命令时,可能会抛出 IOExceptionInterruptedException 异常,需要进行处理。如果命令顺利执行完毕,exitValue 的值应该是 0,否则表示命令执行失败。

希望这段代码能够帮助你解决问题,顺利启动 shell 脚本并传递参数。