我目前正在尝试做一个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
一个无法解释的命令行参数。)