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

标签 java

我正在尝试获取从 JAVA 程序运行的 shell/bash 脚本的输出,虽然我运气不佳,但代码如下:

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 文件相同的目录中。虽然在运行时我得到一个空白结果,不是空的,只是空白。

最佳答案

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

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

祝你好运。

关于java - 从 JAVA 运行 bash 脚本并返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9115287/

相关文章:

java - JPA - 无法获取在一对一关系中生成的主键

java - 在RxJava2中groupBy之后如何获取类中的原始元素?

java - 使用同一个类 Spring 多个 @ConfigurationProperties

图标上的 Javascript 无法使用 Enter 按钮来展开和折叠表格

java - 如何从 Android 中的服务调用一个 Activity 的方法?

java - 我可以 Autowiring 命名记录器吗?

java - 如何使用 Android Volley 发布 JSON 数组并获取 JSON 对象作为响应?

Java:将对象包装在某种类型的集合中以存储集合中的重复项

java - 完成 future : whenCompleteAsync() does not let me re-throw an Exception

java - 从表中删除列之前要考虑的因素