2014-02-24 134 views
1

有没有办法从shell脚本程序中将输出从Java程序(而不是输出文件)中获取到变量中。我的shell脚本的输出是数据库查询执行时间,我需要将该时间值分配给Java变量。 (我从Java程序调用该shell脚本)。然后我需要在Java中对这些值进行一些其他计算。将shell脚本的输出放入Java程序的变量中

+0

你从哪里得到那个输出? –

+0

我的shell脚本中有这个变量:TIME ='echo“$ END - $ START”,现在我需要获取TIME的输出,并将TIME变量的值分配给Java类中的其他变量。我正在做遗传算法的适应度函数,所以进一步通过对从shell脚本获得的那些Java变量进行一些计算,我设置适应度并将其发送到ecj(ecj是用Java编写的用于进化优化的工具包) – user3344382

+0

正在执行通过Java的脚本?如果是的话,你可以得到一个'Process'''InputStream'并读取/解析它。 –

回答

-1

我只是谷歌它,有一个很好的教程,全面的例子在这里:http://www.mkyong.com/java/how-to-execute-shell-command-from-java/

我知道人们prefere复制/粘贴,但让我们尊重其他人的工作,并继续他们的网站:P

+0

这应该是一条评论。 –

+2

在答案中包含内容的原因之一是,即使原始页面脱机,它也会始终保留在此处。 –

0

以下程序将帮助您将任何脚本或任何命令的完整输出存储到String对象中。

import java.io.BufferedReader; 
import java.io.InputStreamReader; 

public class ExecuteShellComand { 

    public static void main(String[] args) { 

     ExecuteShellComand obj = new ExecuteShellComand(); 

     String output = obj.executeCommand("sh /opt/yourScriptLocation/Script.sh"); 

     System.out.println(output); 

    } 

    private String executeCommand(String command) { 

     StringBuffer output = new StringBuffer(); 

     Process p; 
     try { 
      p = Runtime.getRuntime().exec(command); 
      p.waitFor(); 
      BufferedReader reader = 
          new BufferedReader(new InputStreamReader(p.getInputStream())); 

         String line = ""; 
      while ((line = reader.readLine())!= null) { 
       output.append(line + "\n"); 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return output.toString(); 

    } 

} 
相关问题