Bash多输入Java测试程序

时间:2012-10-28 22:03:11

标签: java linux bash unix

我目前正在尝试制作一个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

P.S。除了多行输入之外,一切都正常工作,我有两个带有硬编码输入的文本文件来测试代码。

谢谢!

1 个答案:

答案 0 :(得分:2)

我看到像

这样的命令
echo easyFirst.txt | java -cp . First - > easyFirstResult

显然为java程序提供了一行输入;但echo这样的命令不传输文件内容,只是将文本像“easyFirst.txt”复制到stdout。要将文件easyFirst.txt的内容传递给First,请使用类似

的命令
java -cp . First - < easyFirst.txt > easyFirstResult

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