Bash多inputJavatesting器

我目前正在尝试做一个bashtesting脚本,将…

1)进入许多人的文件夹

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

3)对编译结果运行两个快速testing,并将输出发送到一个文件保存在文件夹中

4)取这四个结果文件的结果,并将其转储到一个结果文件中,顶部有一个模板,以便input结果

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

input号码1:

input号码2:

input数字3:

…等等,我不知道如何让它继续把input到他们的程序。 我的硬编码input后,我需要一个EOF在我的bash文件? 这是我到目前为止…

#! /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 

PS一切工作除了多行input,我有两个文本文件与我的硬编码input来testing代码。

谢谢!

我看到类似的命令

 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一个无法解释的命令行参数。)