从JAVA运行bash脚本并返回结果

时间:2012-02-02 15:48:27

标签: java

我试图获取一个shell / bash脚本的输出,它是从JAVA程序运行的,虽然我没有太多运气,代码如下:

GetStats(winhostname);

public static String winhostname "cmd /c hostname";

public static void GetStats(String operation)
    {
         try 
            { 
            Process p=Runtime.getRuntime().exec(operation); 
            p.waitFor(); 
            BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream())); 
            String line=reader.readLine(); 
            while(line!=null) 
            { 
            System.out.println(line);
            if (operation.equals("winhostname"))
            {
                winhostnamevalue = line;
            }
            line=reader.readLine(); 
            } 

            } 
            catch(IOException e1) {} 
            catch(InterruptedException e2) {}       
    }

这适用于Windows,所以我将winhostname的值更改为“sh namecheck.sh”(只是回显主机名),shell脚本与java / class文件位于同一目录中。虽然在运行时我得到一个空白结果,而不是空,只是空白。

1 个答案:

答案 0 :(得分:1)

试试/bin/sh。我不确定当你从java运行程序时,它具有你使用shell时所拥有的所有环境。

如果不起作用,请尝试运行某个命令(例如pwd)。但提供完整的路径。然后,当它工作时再次尝试您的命令,并确保它可以找到您的脚本。首先使用绝对路径。然后转到相对路径。

祝你好运。