java - 使用 java 运行 .sh 文件

标签 java bash terminal command

我想使用 java 运行 .sh 文件。我想要打开一个终端,然后我可以在同一终端中执行另一个命令,最后销毁它。 我已经使用 ProcessBuilder 但无法完成此任务。 我的一段代码:

ProcessBuilder pb = new ProcessBuilder("/home/omar/ros_ws/baxter2.sh");
Process p = pb.start();

这个方法曾经在另一个代码中工作,但我不知道为什么它在我的代码中不起作用。

提前致谢

最佳答案

你怎么知道它没有执行?也许您只是没有看到其结果。执行后您应该得到 p.getInputStream() 并在控制台中打印,例如:

BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null)
{
   System.out.println(line);
}

此外,如果您使用的是 jdk 7+,请尝试:

pb.redirectOutput(Redirect.INHERIT);
pb.redirectError(Redirect.INHERIT);
Process p = pb.start();

关于java - 使用 java 运行 .sh 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36669503/

相关文章:

java - 什么指的是我的文件,阻止我成功调用 .delete()?

linux - 从特定字段的 csv 中删除行,如果它包含以下 x 个字符串/单词

linux - 可以告诉终端在现有打开的终端窗口中打开新窗口作为选项卡吗?

java - 如何在 Hadoop 的 java/terminal 中指定文件的路径?

bash - 如何导出没有元数据的 kubernetes list 文件?

windows - Windows 10 上的 Ansi 颜色,有点不工作

java - @OneToOne 作为 ManyToOneType 返回

java - 是否可以将列类型映射到另一个对象属性类?

java - 在 Tomcat 服务器中集成 2 个应用程序的最简单解决方案是什么?

bash - 双星号 (**) 通配符是什么意思?