我正在尝试获取从 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/