1

実行に時間がかかるJavaプログラムがあり、それを10回実行する必要があり、出力の最後の5行のみに関心があり、実際の出力は数百行で実行されます。tail -5ファイルに実行するために必要な出力を平均化したいので。また(--random)、引数のパラメーターの 1 つが実行ごとに変化し続けます。

私は次のことをしています:

for i in {1..10} ; do cat output| tail -5 | java -cp src.Tagger.java --random $1; done

申し訳ありませんが、私はbashが本当に苦手です。

4

2 に答える 2

1

Java プログラムの出力を最初に出力したい場合は、ファイルを末尾にする必要があります。現在、出力を Java プログラムに入力としてフィードしているようです。それはあなたが望んでいることではないと思います。代わりにこれを試してください:

for i in {1..10}
do 
    java -cp src.Tagger.java --random $1 > output;
    tail -5 output;
done

また、Javaコマンドが正しいかどうかも疑問です。java ファイルを実行するときは、ファイル名に .java を指定しないでください。コンパイルされた .class ファイルから実行する必要があり、java コマンドは .class を想定しているため、コマンド ラインでは必要ありません。-cp (クラスパス) も使用していますが、引数を指定していないようです。Java コマンドは次のようになると思います。

java -cp classesdir com.mydomain.myapp.Tagger
于 2013-03-01T18:09:57.260 に答える
1

最初に、Java プログラムを実行できることを確認する必要があります。.java ファイルを直接実行することはできません。コンパイルする必要があります。

ファイルがある場合は、src/Tagger.javaそれをコンパイルしてみてください

javac -cp src src/Tagger.java

ただし、他のライブラリやビルド システムが必要な場合は、まったく異なる可能性があります。このアプリをダウンロードした場合は、プロジェクトのドキュメントを参照してください。

これにより、暗黙のうちにsrc/Tagger.class. これを取得したら、次のコマンドで実行してみてください。

java -cp src Tagger --random 1234

ただし、ライブラリに依存している場合は異なります。

それが機能する場合は、最終的にループで実行を開始できます。

for i in {1..10}
do 
    cat output| tail -5 | java -cp src Tagger --random 1234
done
于 2013-03-01T18:08:56.363 に答える