我有一个脚本,在Ubuntu上是test.sh。我想从Java运行它。我知道我必须使用Runtime.getRuntime().exec();
我是否必须在exec括号中填写test.sh的位置?我正在输入/home/main/ss/test.sh
我没有收到任何错误消息但是当我搜索文件夹时,我看到该脚本无效。我该如何解决?
答案 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这样的绝对路径,你可以快速验证,这是否是你的问题。