Java 调用 Shell 脚本可以通过 Java 的 Runtime 类或者 ProcessBuilder 类来实现。
通过 Runtime 类调用 Shell 脚本
Java Runtime 类提供了访问 Java 应用程序运行时环境的方法。下面是通过 Runtime 类调用 Shell 脚本的示例代码:
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Demo {
public static void main(String[] args) throws Exception {
String[] cmdArray = new String[] {"sh", "/path/to/script.sh"};
Process process = Runtime.getRuntime().exec(cmdArray);
BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
int exitCode = process.waitFor();
System.out.println("Exit code: " + exitCode);
}
}
上面的代码中,我们通过 Runtime 类的 exec() 方法执行了一个命令。该方法返回一个 Process 对象,用于对进程进行控制。我们可以通过 Process 对象获取 Shell 脚本的输出信息,并等待脚本执行结束。
通过 ProcessBuilder 类调用 Shell 脚本
Java ProcessBuilder 类用于创建操作系统进程。与 Runtime 类不同的是,使用 ProcessBuilder 类可以更精确地控制进程的环境变量、工作目录和错误输出等。下面是通过 ProcessBuilder 类调用 Shell 脚本的示例代码:
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Demo {
public static void main(String[] args) throws Exception {
ProcessBuilder pb = new ProcessBuilder("sh", "/path/to/script.sh");
Process process = pb.start();
BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
int exitCode = process.waitFor();
System.out.println("Exit code: " + exitCode);
}
}
上面的代码中,我们使用了 ProcessBuilder 类来执行 Shell 脚本。该类的 start() 方法会返回 Process 对象,用于对进程进行控制。我们同样可以通过 Process 对象获取 Shell 脚本的输出信息,并等待脚本执行结束。
如果需要在脚本中传递参数,我们可以使用 ProcessBuilder 类的 command() 方法:
ProcessBuilder pb = new ProcessBuilder("sh", "/path/to/script.sh", "arg1", "arg2");
以上就是 Java 如何调用 Shell 脚本的完整攻略,希望能够帮助你了解这个过程。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JAVA如何调用Shell脚本 - Python技术站