【问题标题】:how to integrate Bash with Java如何将 Bash 与 Java 集成
【发布时间】:2012-09-18 21:44:18
【问题描述】:

任何人都可以帮助我了解如何将 bash 脚本编译为 java 程序的一部分。我正在编写一个简单的 java 程序,我想用它来调用 bash 脚本命令。


我的 java 代码如下所示:

    try{
            Process p = Runtime.getRuntime().exec("myscript.sh"); 
        BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); 

        String line = null;  

        while ((line = in.readLine()) != null){  
                    System.out.println(line); 
        }  
    }
    catch(IOException e){
        System.out.println(e.getMessage());
    }

“mysrcipt.sh”文件是一个简单的脚本,包含以下几行


!/bin/bash

echo "输入您的输入,然后按 [ENTER]:"

读取 -e 选择

回声$选择


我的问题是,即使我输入多行并按回车多次,程序也会等待脚本中读取命令的输入。

【问题讨论】:

    标签: java linux bash


    【解决方案1】:

    你可以使用:

    Process p = Runtime.getRuntime().exec("bash_script.sh"); 
    BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));  
    String line = null;  
    while ((line = in.readLine()) != null) {  
       // use bash script line output
    }  
    

    【讨论】:

      【解决方案2】:

      查看一些显示您要完成的工作的代码会很有帮助。

      在 Java 中执行 bash 脚本可以使用类似以下的方式来完成...

      Runtime runtime = Runtime.getRuntime();
      Process process = runtime.exec("YOUR COMMAND STRING");
      
      List<String> lines = IOUtils.readLines(process.getInputStream());
      

      【讨论】:

      • 那是 org.apache.commons.io.IOUtils,顺便说一下,不是标准的 Java 库。
      • 好点,我从前段时间写的一段代码中提取了它,并没有检查导入。我为 Reimeus 的更一般形式的答案 +1 了。
      【解决方案3】:

      Runtime.exec() 是执行 bash 脚本所需要的,但请注意存在一些缺陷。在开始调用外部脚本时,我发现this 是一篇好文章。

      它是为 Windows 平台编写的,但所讨论的很多内容也与 *nix 有关。

      另见this question

      【讨论】:

      • 关于这篇文章,您是否确定了文章发布的日期? 2000 年 12 月 29 日上午 12:00?
      猜你喜欢
      • 1970-01-01
      • 2018-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多