当前位置: 首页 > 知识库问答 >
问题:

如何使用Java执行多个unix命令并捕获单个输出或错误(如果有)

子车鸿运
2023-03-14

我有这个需求,我需要执行一个unix命令列表,然后对每个命令我应该存储它的结果。Eg.命令-cd dir 1, pwd, ls

我的输出应该包含-

cd-dir1-pwd-dir1 ls-a、b、c、d(假设它们位于dir1目录下)

我尝试使用JSch库,并尝试使用shell和exec通道类型。

但这不允许我发送命令并读取输出,然后再发送另一个命令并读取输出。

我现在所做的是使用exec在每个命令后发送所有命令和一个echo命令,然后读取该命令输出的echo。

我使用shell发送命令,但它会等待退出命令,否则它会无限等待。

还有,我们如何获得单个命令的错误

请建议是否有任何方法来实现这一点。

共有1个答案

宓茂才
2023-03-14

如果命令是独立的,为每个命令打开一个新的“exec”通道。

如果后面的命令依赖于前面的命令,那么就没有好的解决方案。

实际上,你已经找到了最好的方法:

我现在所做的是使用exec在每个命令后发送所有命令和一个echo命令,然后读取该命令输出的echo。

在继续之前,请参阅JSch外壳通道逐个执行命令的测试结果。

 类似资料:
  • 我是maven的新手,我想同时执行2个java文件。我在StackOverflow中读了几篇文章,因为我对maven的了解有限,所以我不明白如何做到这一点。我在这里附加了我的pom.xml文件,我在mac终端中使用的命令行是: mvn编译执行:Java-dexec . main class = " org . parallel . parse thread 1 " 我有另一个名为ParseThre

  • 当在下面运行时,将打开代码提示符,并显示java版本信息。我想打印java版本信息。请帮帮我

  • 问题内容: 我想做这样的事情,我可以依次运行多个命令。 问题答案: 想通了,使用 。 例: 多行中的相同示例: 要么:

  • 问题内容: 如何执行Bash命令并从Java收集输出? 大家好,基本上,我正在编写一个基本的控制台应用程序,并且希望能够从中运行命令,例如sudo ***,halt,ifconfig等。 有见识吗? 问题答案: 您可以为此使用processBuilder API。请参阅此示例。

  • 问题内容: 我正在使用Groovy在我的Linux机器上执行命令并返回输出,但是我无法以某种方式使用管道(我认为),或者它可能没有在等待命令完成。 有什么问题或我的代码中缺少什么? 我的调用函数: 文件内容(更新:添加了exitVal println): 我的输出(更新:添加了exitVal值): 注意:我在内部使用。 问题答案: 您不能使用进行管道或重定向。这在Java中不起作用,因此在Groo