专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java执行shell脚本的方法

Java执行shell脚本的方法

更新时间:2022-08-01 11:36:12 来源:动力节点 浏览6158次

动力节点小编来告诉大家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 在 Java 中执行 shell 脚本

如果您必须使用 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在线学习,里面的课程内容细致全面,很适合没有基础的小伙伴学习,希望对大家能够有所帮助。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>