我有一个需要时间执行的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。
答案 0 :(得分: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
答案 1 :(得分: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