Java ProcessBuilder 无法运行简单的脚本

标签 java linux bash shell processbuilder

我有 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/

相关文章:

linux - ps | 和有什么区别? wc 和PS r | Linux 下的 wc ?

Java:在线保存到文件

bash - 如何监视两个进程并在一个进程退出时执行某些操作(bash 脚本)?

java - 获取包含的 jar 的 NoClassDefFoundError

c - exec 后两个进程之间的共享内存

java - 运行包含包的 java 文件(在 Linux 上)

linux - 为什么在 Grepping 文件 (.gz) 时,字数统计(即 -wc)中有很多零

bash - 并行运行 bash 脚本

java - 使用身份验证从 url 下载文件

Java EE : how to get the URL of my application?