1

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

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

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

4

1 回答 1

2

这是一个非常经典的错误,坦率地说,我很惊讶您没有通过四处搜索找到答案。

AProcess不是命令解释器。

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

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

这显然不是你想要的。

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

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

链接到 javadoc

于 2015-09-22T07:05:09.407 回答