更新时间:2022-08-01 11:36:12 来源:极悦 浏览6348次
极悦小编来告诉大家Java执行shell脚本的方法。如果你有一个 shell 脚本,比如 test.sh,那么你可以使用 RunTime 类或 ProcessBuilder 从 Java 程序运行它(注意 ProcessBuilder 是在 Java 5 中添加的)。
使用 Runtime.getRunTime().exec 执行 shell 脚本
导入 java.io.BufferedReader;
导入 java.io.IOException;
导入 java.io.InputStreamReader;
公共类 RunningSS {
公共静态无效主要(字符串[]参数){
进程 p;
尝试 {
String[] cmd = { "sh", "/home/adb/Documents/test.sh"};
p = Runtime.getRuntime().exec(cmd);
p.waitFor();
BufferedReader reader=new BufferedReader(new InputStreamReader(
p.getInputStream()));
字符串线;
while((line = reader.readLine()) != null) {
System.out.println(line);
}
} 捕捉(IOException e){
// TODO 自动生成的 catch 块
e.printStackTrace();
} 捕捉(InterruptedException e){
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
使用给定的 shell 脚本执行此 Java 程序后,如果您在 Java 程序所在的位置进行验证,您将看到在该目录中创建了一个目录 test 和一个文件 SAMPLE。
Runtime.getRuntime().exec方法用于运行命令。
public static Runtime getRuntime() - 返回与当前 Java 应用程序关联的运行时对象。
public Process exec(String command) throws IOException - 在单独的进程中执行指定的字符串命令。
与命令一起使用的cmd /c具有以下解释 -
cmd - 启动一个新的命令外壳
/c - 执行给定的命令并终止
该命令的执行返回类 Process 的实例。使用 Process 类的getInputStream()方法,可以通过读取流来打印执行命令的输出。
如果您必须使用 ProcessBuilder 运行与上述相同的命令,这是一种更清晰的方法,您可以创建一个包含命令和所需参数的列表,然后将其作为命令传递给 ProcessBuilder 实例。
导入 java.io.BufferedReader;爪哇_ 伊奥。缓冲读取器;
导入 java.io.IOException;导入java 。伊奥。异常;
导入 java.io.InputStreamReader;导入java 。伊奥。输入流读取器;
导入 java.util.ArrayList;导入java 。实用程序。数组列表;
导入 java.util.List;导入java 。实用程序。列表;
公共类 RunningSS {公共类RunningSS {
公共静态无效主要(字符串[]参数){公共静态无效主要(字符串[]参数){
进程 p;进程p ;
尝试 { 试试{
List<String> cmdList = new ArrayList<String>();列表<字符串> cmdList = new ArrayList <字符串>();
// 将命令和参数添加到列表中// 将命令和参数添加到列表中
cmdList.add("sh");. 添加(“sh” );
cmdList.add("/home/adb/Documents/test.sh");. 添加(“/home/adb/Documents/test.sh” );
ProcessBuilder pb = new ProcessBuilder(cmdList);ProcessBuilder pb = new ProcessBuilder ( cmdList );
p = pb.start();=铅。开始();
p.waitFor();. 等待();
BufferedReader reader=new BufferedReader(new InputStreamReader(BufferedReader reader = new BufferedReader ( new InputStreamReader (
p.getInputStream()));. 获取输入流()));
字符串线;字符串线;
while((line = reader.readLine()) != null) {while (( line = reader . readLine ()) != null ) {
System.out.println(line);系统。出来。println (行);
}}
} 捕捉(IOException e){}捕捉(IOException e ){
// TODO 自动生成的 catch 块// TODO 自动生成的 catch 块
e.printStackTrace();. 打印堆栈跟踪();
} 捕捉(InterruptedException e){}捕捉(InterruptedException e ){
// TODO 自动生成的 catch 块// TODO 自动生成的 catch 块
e.printStackTrace();. 打印堆栈跟踪();
}}
}}
}}
以上就是关于“Java执行shell脚本的方法”,如果大家对此比较感兴趣,可以关注一下极悦的Java极悦在线学习,里面的课程内容细致全面,很适合没有基础的小伙伴学习,希望对大家能够有所帮助。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习