我有一个需要时间执行的 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。
你应该确保你可以首先执行你的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
您希望您的 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