从Java代码中运行Shell脚本
从Java代码中运行Shell脚本
我有一个Java应用程序,它运行一个bash文件,在bash文件中我有一个代码来运行另一个Java应用程序,但似乎无法工作。我以C++为背景,这是一个非常简单的任务,但我在Java方面经验不足。
下面是我的代码:
import java.io.IOException; import java.net.*; import java.util.Scanner; public class start { public void executeScript(){ try{ ProcessBuilder pb = new ProcessBuilder("/root/Desktop/chat/script.sh"); Process p = pb.start(); p.waitFor(); System.out.println("脚本已执行.."); }catch(Exception e){ e.printStackTrace(); } } public static void main(String[] args) { start st = new start(); System.out.println("我是主函数.."); st.executeScript(); } }
这是我的bash文件:
#!/bin/bash echo "bash开始" java Client ip_address echo "bash结束"
这是代码的结果:
我是主函数.. 脚本已执行..
我知道"脚本已执行.."不应该打印出来,因为我试图从bash文件中运行的Java文件是一个无限循环。
注意:如果我单独在终端中运行bash文件,我会得到一个无限循环,这是预期的结果,这就是为什么我知道我的错误是来自这个文件的。
我希望我表达清楚了,如果没有,请提供更多信息。谢谢。