java程序 调用sh脚本 脚本里 多条命令 程序退出后 命令也不执行了
时间: 2023-08-30 07:01:31 浏览: 94
Java程序去调用并执行shell脚本及问题总结(推荐)
5星 · 资源好评率100%
当Java程序调用sh脚本时,脚本中的多条命令执行情况可能受到程序退出的影响。 这是因为Java程序在执行完调用命令的操作后,程序将会退出,并且与该脚本的进程间未建立正确的关联。
为解决这个问题,可以使用Shell类提供的方法来执行脚本,并且保持与脚本的进程关联。以下是一个示例代码:
```java
import java.io.*;
public class ExecuteShellScript {
public static void main(String[] args) {
try {
ProcessBuilder pb = new ProcessBuilder("/bin/sh", "your_script.sh");
pb.inheritIO();
Process process = pb.start();
int exitCode = process.waitFor();
if (exitCode == 0) {
System.out.println("脚本执行成功");
} else {
System.out.println("脚本执行失败");
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
```
在上面的代码中,我们使用ProcessBuilder类来创建一个与脚本的进程相关联的进程。inheritIO()方法用于将脚本的输入/输出流与Java程序的输入/输出流进行相关联。然后,使用start()方法来启动脚本的执行,并使用waitFor()方法等待脚本执行完成。
这样,即使Java程序退出,脚本仍然会继续执行。执行结果可以根据返回的退出码来判断脚本是否执行成功。
需要注意的是,你需要将"your_script.sh"替换为实际的脚本文件名。此外,还要确保脚本文件在指定的路径中存在,并有可执行权限。
希望以上解答对你有帮助。如果你有任何其他问题,请随时提问。
阅读全文