来自 java 的错误 运行 linux 命令

Error running linux command from java

我正在尝试 运行 使用 Process process =Runtime.getRuntime().exec(command) 从 java 代码执行以下命令,但出现错误。

命令:repo forall -c 'pwd;git status'

错误:'pwd;git: -c: line 0: unexpected EOF while looking for matching''` 我可以从 linux 终端执行 运行 这个命令,但是当从 java 执行 运行ning 时,问题出在 pwd 之后的 space;git .谁能帮我?

这是一个超级经典的错误,坦率地说,我很惊讶你没有通过搜索找到答案。

A Process 不是命令解释器。

然而,如果你只传递一个参数,Runtime.exec() 仍然会尝试作为一个整体,在这里你最终会像这样分裂:

  • repo
  • forall
  • -c
  • 'pwd;git
  • status'

这显然不是你想要的。

使用 ProcessBuilder。我不会为你做这一切,但这里是如何开始的:

final Process p = new ProcessBuilder()
    .command("repo", "forall", "-c", "pwd; git status")
    // etc etc
    .start();

Link to the javadoc.