如何从Java运行脚本

时间:2012-02-06 21:14:06

标签: java ubuntu

我有一个脚本,在Ubuntu上是test.sh。我想从Java运行它。我知道我必须使用Runtime.getRuntime().exec();

我是否必须在exec括号中填写test.sh的位置?我正在输入/home/main/ss/test.sh

我没有收到任何错误消息但是当我搜索文件夹时,我看到该脚本无效。我该如何解决?

3 个答案:

答案 0 :(得分:1)

你应该看看Process Builder。它真的是为这种东西而建的。

 ProcessBuilder pb = new ProcessBuilder("myshellScript.sh", "myArg1", "myArg2");
 Map<String, String> env = pb.environment();
 env.put("VAR1", "myValue");
 env.remove("OTHERVAR");
 env.put("VAR2", env.get("VAR1") + "suffix");
 pb.directory(new File("myDir"));
 Process p = pb.start();

答案 1 :(得分:0)

您是否尝试直接调用脚本,还是指定了要使用的shell?如果没有从脚本的第一行指定(和处理),则可能需要在exec调用中指定shell。

答案 2 :(得分:0)

通过查看您的描述,您如何结束脚本不起作用:

  

我没有收到任何错误消息但是当我搜索文件夹时,我看到了   那个脚本没用。我该如何解决?

我总结说,从Java开始,脚本创建了一个新文件,并且没有。

也许您认为,如果发送到当前目录,脚本的输出将在脚本目录中结束,而不是在您启动Java应用程序的目录中。

这可能是桌面,如果你从带有Icon作为入门者的UI启动你的类,它可能是你的家庭或项目目录,如果你手工编译类,或者你的IDE设置的目录,如果你用eclipse或类似的东西发展。

如果你的脚本写入像/tmp/script.out这样的绝对路径,你可以快速验证,这是否是你的问题。