java如何执行.sh
执行 .sh 文件的方法
在 Java 中执行 .sh(Shell 脚本)文件可以通过 Runtime 或 ProcessBuilder 类实现。以下是具体方法:
使用 Runtime.exec()
通过 Runtime.getRuntime().exec() 直接调用 Shell 命令执行脚本:
try {
Process process = Runtime.getRuntime().exec("/bin/sh /path/to/script.sh");
int exitCode = process.waitFor();
System.out.println("脚本执行结束,退出码: " + exitCode);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
使用 ProcessBuilder
ProcessBuilder 提供更灵活的参数控制,适合复杂场景:
try {
ProcessBuilder pb = new ProcessBuilder("/bin/sh", "/path/to/script.sh");
pb.redirectErrorStream(true); // 合并错误流和输出流
Process process = pb.start();
// 读取输出
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);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
注意事项
- 脚本权限:确保
.sh文件有可执行权限(chmod +x script.sh)。 - 路径问题:建议使用绝对路径,避免相对路径导致的找不到文件问题。
- 环境变量:若脚本依赖特定环境变量,需通过
ProcessBuilder.environment()设置。 - 超时处理:长期运行的脚本需通过
process.waitFor(timeout, TimeUnit)避免阻塞。
示例:带参数的脚本
若脚本需要参数,直接追加到命令中:

ProcessBuilder pb = new ProcessBuilder("/bin/sh", "/path/to/script.sh", "arg1", "arg2");






