【问题标题】:can I run an interactive script through java? [closed]我可以通过 java 运行交互式脚本吗? [关闭]
【发布时间】:2017-02-11 09:41:39
【问题描述】:

我想在 linux 平台上通过 java 运行一个脚本,它只是提出问题,我可以输入它的答案,然后它可以继续进行。我无法找到一种方法来做到这一点。 我可以通过 java 运行我的脚本,但它如何接受我的答案??

这是我的简单脚本 test.sh

read -p "What is your name?" name
echo $name
read -p "What is your age?" age
echo $age
echo 'done'

提前致谢

【问题讨论】:

    标签: java linux shell


    【解决方案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);
    }
    

    【讨论】:

    • 我已经尝试过了,但它开始等待并且永远不会返回 process = Runtime.getRuntime().exec(command); System.out.println("第一行");进程.waitFor(); System.out.println("第二行");在此代码中,第二行从不打印
    • 检查你的脚本,它是通过命令提示符执行的吗?
    【解决方案2】:

    你可以看看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 命令,它同时是一个输入和输出命令...所以您可能会遇到一些麻烦。

    【讨论】:

    • 感谢 Fabien,我得到了答案,期望命令为我做到了 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多