我想通过在Linux平台上的Java运行一个脚本,简单地问问题,我可以键入的答案,那么它可以进一步进行。我无法找到办法做到这一点。 我可以通过java运行我的脚本,但它如何接受我的答案?我可以通过java运行交互式脚本吗?
这里是我的简单的脚本test.sh
read -p "What is your name?" name echo $name read -p "What is your age?" age echo $age echo 'done'
在此先感谢
我想通过在Linux平台上的Java运行一个脚本,简单地问问题,我可以键入的答案,那么它可以进一步进行。我无法找到办法做到这一点。 我可以通过java运行我的脚本,但它如何接受我的答案?我可以通过java运行交互式脚本吗?
这里是我的简单的脚本test.sh
read -p "What is your name?" name echo $name read -p "What is your age?" age echo $age echo 'done'
在此先感谢
尝试这个 -
String command = "test.sh";
Process process;
process = Runtime.getRuntime().exec(command);
process.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String response= "";
while ((response= reader.readLine()) != null) {
System.out.println(response);
}
你可以看看到ProcessBuilder
类:
ProcessBuilder pb = new ProcessBuilder("/path_to_your_script.sh");
pb.inheritIO(); // redirect input and output
Process p = pb.start();
p.waitFor(); // allow to wait the end of your process
然而,在你的脚本比如你有一个read -p
命令,它是在同一时间输入和输出命令......所以,你可以有一些麻烦。
谢谢小煜,我得到了我的答案预期命令为我做:) –
我试过这个,但它开始等待并且从不返回 \t \t process = Runtime.getRuntime()。exec(command); \t \t System.out.println(“first line”); \t \t process.waitFor(); \t \t的System.out.println( “第二行”); 在这段代码中第二行从不打印 –
检查你的脚本,它是通过命令提示符下执行? – deen