1

我有一个需要时间执行的 java 程序,我必须运行 10 次,我只对输出的最后 5 行感兴趣,实际输出运行数百行。因为我想平均我想要tail -5运行到文件中的输出。我的参数(--random)中的一个参数也在每次运行中不断变化。

我正在执行以下操作:

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 文件,必须对其进行编译。

如果你有这个文件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 回答
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 回答