2012-10-28 52 views
2

目前我試圖做一個bash的測試腳本,將...猛砸多輸入的Java測試儀

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.除了多行輸入之外,一切都在工作,並且我有兩個文本文件和我的硬編碼輸入來測試代碼。

謝謝!

+0

您是否想過使用[Apache Ant](http://ant.apache.org/)或[Maven](http://maven.apache.org/)等工具?一旦你的項目變得更加複雜,他們可以幫助你很多。 (雖然Maven本身可以讓你變得灰白的頭髮......) – antiguru

+0

我會檢查出來的! – yiati

回答

2

我看到像

echo easyFirst.txt | java -cp . First - > easyFirstResult 

顯然提供給Java程序的線輸入的命令;但是echo這樣的命令不會傳輸文件內容,它們只是將文本「easyFirst.txt」複製到標準輸出。到管道文件easyFirst.txt的內容轉換成首先,使用的命令等

java -cp . First - <easyFirst.txt> easyFirstResult 

(注意,上面的假設類路徑是.,類是First,並-是一種無法解釋的命令行參數首先。)

+0

好的。是的,我的類路徑是,並且我檢查以確保第一個和第二個是類名。 – yiati

+0

我現在的問題我想是,我該如何格式化我的txt文件,以確保一行將是他們的程序第一次請求輸入和「回車」的響應,然後繼續前進到下一行並繼續執行同樣的事情,直到我的txt文件結束。 – yiati

+2

我相信每行一個項目應該這樣做。目前我缺乏時間,無法測試,對不起。 –