2

現在、bash テスト スクリプトを作成しようとしています...

1) 多くの人のフォルダに入る

2) 2 つの Java ファイルをコンパイルする

3) コンパイルされた結果に対して 2 つの簡単なテストを実行し、出力をファイルに送信して、そのフォルダーに保存します。

4) これらの 4 つの結果ファイルの結果を取得し、それらを 1 つの結果ファイルにダンプし、上部に結果を入力するためのテンプレートを配置します。

...そして、私は現在、これのほとんどを行っています。私の唯一の問題は、プログラムが数行の入力を要求することです。たとえば...

入力番号 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

PSすべてが複数行の入力以外に機能しており、コードをテストするためにハードコーディングされた入力を含む2つのテキストファイルがあります。

ありがとう!

4

1 に答える 1

2

次のようなコマンドが表示されます

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

Javaプログラムに入力行を提供しているようです。ただし、echoそのようなコマンドはファイルの内容を転送せず、「easyFirst.txt」などのテキストを標準出力にコピーするだけです。ファイル easyFirst.txt の内容を First にパイプするには、次のようなコマンドを使用します

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

(注: 上記では、クラスパスが.、クラスがFirst、および-が First に対する説明のないコマンド ライン引数であると想定しています。)

于 2012-10-28T23:01:52.127 に答える