Bash多输入Java测试仪

Bash多输入Java测试仪,java,linux,bash,unix,Java,Linux,Bash,Unix,我目前正在尝试制作一个bash测试脚本,它将 1) 进入许多人的文件夹 2) 编译他们的两个java文件 3) 对编译后的结果运行两个快速测试,并将输出发送到要保存在其文件夹中的文件 4) 获取这四个结果文件的结果,并将它们转储到一个结果文件中,顶部有一个模板供我输入结果 。。。目前我已经完成了大部分工作。我唯一的问题是他们的程序需要几行输入,例如 输入数字1: 输入数字2: 输入数字3: 。。。等等,我不知道如何让它继续为他们的计划投入。在我的bash文件中硬编码输入之后是否需要EOF??这是

我目前正在尝试制作一个bash测试脚本,它将

1) 进入许多人的文件夹

2) 编译他们的两个java文件

3) 对编译后的结果运行两个快速测试,并将输出发送到要保存在其文件夹中的文件

4) 获取这四个结果文件的结果,并将它们转储到一个结果文件中,顶部有一个模板供我输入结果

。。。目前我已经完成了大部分工作。我唯一的问题是他们的程序需要几行输入,例如

输入数字1:

输入数字2:

输入数字3:

。。。等等,我不知道如何让它继续为他们的计划投入。在我的bash文件中硬编码输入之后是否需要EOF??这是我到目前为止所拥有的

#! /bin/bash


for i in $(find . -maxdepth 1 -type d)
do

    pwd
    pushd "$i"
    pwd

    if [ -f "First.java" ];
    then
        javac -cp . First.java
        echo easyFirst.txt | java -cp . First - > easyFirstResult
        echo hardFirst.txt | java -cp . First - > hardFirstResult
    fi

    if [ -f "Second.java" ];
    then
        javac -cp . Second.java
        echo easySecond | java -cp . Second - > easySecondResult
        echo hardSecond | java -cp . Second - > hardSecondResult
    fi


    printf "easyFirstResult\t: \hardFirstResult\t: \easySecondResult\t: \hardSecondResult\t: " > lab5grade.txt

    popd

done
另外,除了多行输入外,其他一切都正常工作,我有两个文本文件和我的硬编码输入来测试代码

谢谢

我看到这样的命令

echo easyFirst.txt | java -cp . First - > easyFirstResult
显然为java程序提供了一行输入;但是
echo
这样的命令不会传输文件内容,它们只是将“easyFirst.txt”这样的文本复制到stdout。要通过管道将文件easyFirst.txt的内容传输到First中,请使用以下命令

java -cp . First - < easyFirst.txt > easyFirstResult
java-cp。第一个-easyFirstResult

(注意,上面假设classpath是
,class是
First
,而
-
是First的一个无法解释的命令行参数。)

好的。是的,我的类路径是,我会检查以确保第一个和第二个是类名。我现在的问题是,我需要如何格式化我的txt文件,以确保一行是对他们的程序的第一个输入请求和“点击回车”的响应,然后继续我的下一行,继续做同样的事情,直到我的txt文件结束。我相信每行一项就可以做到。我现在时间不够,不能测试,对不起。你有没有想过使用像或这样的工具?一旦你的项目变得更复杂,它们会有很大帮助。(尽管Maven本身会让你头发变白……)