【发布时间】:2013-12-19 14:10:07
【问题描述】:
我正在尝试从 java 程序运行 shell 脚本(比如 myscript.sh)。
当我从终端运行脚本时,像这样:
./myscript.sh
效果很好。
但是当我从 java 程序中调用它时,使用以下代码:
try
{
ProcessBuilder pb = new ProcessBuilder("/bin/bash","./myScript.sh",someParam);
pb.environment().put("PATH", "OtherPath");
Process p = pb.start();
InputStreamReader isr = new InputStreamReader(p.getInputStream());
BufferedReader br = new BufferedReader(isr);
String line ;
while((line = br.readLine()) != null)
System.out.println(line);
int exitVal = p.waitFor();
}catch(Exception e)
{ e.printStackTrace(); }
}
它不会走同样的路。 几个 shell 命令(如 sed、awk 和类似命令)被跳过并且根本不提供任何输出。
问题:有什么方法可以使用 java 在新终端中启动此脚本。
PS:我发现“gnome-terminal”命令在 shell 中启动了一个新终端, 但是,我不知道如何在 java 代码中使用它。
我对使用 shell 脚本很陌生。请帮忙
提前致谢
【问题讨论】:
-
你确定,这些命令是在你设置的“OtherPath”里找到的吗?