我的Shell脚本名为“hello”
#This is a shell script
echo "Hello Shell World!"
我的Java代码,
Runtime.getRuntime().exec(new String[]{"./hello"});
我的Java代码执行没有错误,但我没有看到“Hello Shell World!”被打印在终端上。
我相信我的脚本正在执行,因为我没有收到错误, “你好,无法执行,没有这样的文件或目录”。
我正在Linux机器上执行它,Ubuntu。谢谢!
答案 0 :(得分:2)
从Java运行外部程序时,输出不会转到(并且输入不是来自)Java应用程序的终端。
外部程序(您的脚本)的输入和输出流(STDIN,STDOUT,STDERR)被定向到(来自)InputStreams和OutputStreams,这些可以从您执行此操作时创建的Java Process访问exec(...)
答案 1 :(得分:1)
您应该使用阅读器来捕获命令的输出:
Process p=Runtime.getRuntime().exec(new String[]{"./hello"});
p.waitFor();
BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
String line=reader.readLine();
while(line!=null) {
System.out.println(line);
line=reader.readLine();
}