2017-02-11 63 views
-1

我想通过在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' 

在此先感谢

回答

1

尝试这个 -

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); 
} 
+0

我试过这个,但它开始等待并且从不返回 \t \t process = Runtime.getRuntime()。exec(command); \t \t System.out.println(“first line”); \t \t process.waitFor(); \t \t的System.out.println( “第二行”); 在这段代码中第二行从不打印 –

+0

检查你的脚本,它是通过命令提示符下执行? – deen

0

你可以看看到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命令,它是在同一时间输入和输出命令......所以,你可以有一些麻烦。

+0

谢谢小煜,我得到了我的答案预期命令为我做:) –

相关问题