我有 test.sh
调用一些程序,该程序输出一些行。
我的需求是只捕获最后一行输出
所以如果我做简单的
bash test.sh | tail -n 1 ========> Command 1
然后我收到错误 “Do you want output to go to | or to tail”
为了解决上述问题,我这样做
(bash test.sh) | tail -n 1 =======> Command 2
然后我得到简单的 1 行日志。到目前为止一切顺利。
现在我需要通过 java 程序调用上面的命令,所以我将 '(' 作为第一个参数传递给 ProcessBuilder
但它提示它无法理解 '(' 作为第一个参数。
如何将 Command 2
传递给 ProcessBuilder
以获取日志的最后一行。
我对 bash 和 linux 不是很熟悉所以请原谅我的无知。我什至不知道为什么 command 1
会出错。
最佳答案
好吧,由于您现在正在使用 Java,因此您可以使用它的“一次编写,到处运行”的特性。编写一个程序,打开一个文件,读取其中的行,并获取最后一行。它适用于任何平台。
一个很好的类是 BuffedReader .
关于Java ProcessBuilder 无法运行简单的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12377536/