我试图获取一个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文件位于同一目录中。虽然在运行时我得到一个空白结果,而不是空,只是空白。
答案 0 :(得分:1)
试试/bin/sh
。我不确定当你从java运行程序时,它具有你使用shell时所拥有的所有环境。
如果不起作用,请尝试运行某个命令(例如pwd
)。但提供完整的路径。然后,当它工作时再次尝试您的命令,并确保它可以找到您的脚本。首先使用绝对路径。然后转到相对路径。