【问题标题】:Bash multi input Java testerBash 多输入 Java 测试器
【发布时间】:2012-10-28 22:03:10
【问题描述】:

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

附:除了多行输入之外,一切正常,我有两个带有硬编码输入的文本文件来测试代码。

谢谢!

【问题讨论】:

  • 您是否考虑过使用Apache AntMaven 之类的工具?一旦您的项目变得更加复杂,它们可以提供很大帮助。 (虽然 Maven 本身会导致你白发……)

标签: java linux bash unix


【解决方案1】:

我看到类似

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

显然为java程序提供了一行输入;但是echo 之类的命令不会传输文件内容,它们只是将诸如“easyFirst.txt”之类的文本复制到标准输出。要将文件 easyFirst.txt 的内容通过管道传输到 First,请使用类似

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

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

【讨论】:

  • 好的。是的,我的类路径是 .,并且我确实检查以保证 First 和 Second 是类名。
  • 我现在的问题是,我需要如何格式化我的 txt 文件以确保一行将是对他们的程序第一次输入请求和“回车”的响应,然后继续我的下一行并继续做同样的事情,直到我的 txt 文件结束。
  • 我相信每行一个项目应该做到这一点。我现在时间紧,无法测试,抱歉。
猜你喜欢
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多