Apache commons exec run管道命令失败

时间:2013-03-14 06:58:33

标签: git apache-commons-exec

我希望Apache Commons-exec能够运行:

  

git status |头-n1 |切-c13 -

然而,似乎无法执行命令行并给出错误,任何想法?

CommandLine cmdLine = CommandLine.parse( "git status | head -n1 | cut -c13-" );
DefaultExecutor executor = new DefaultExecutor();
executor.setWorkingDirectory( file );
executor.execute( cmdLine );

错误:

error: unknown switch `n'
usage: git status [options] [--] <filepattern>...

1 个答案:

答案 0 :(得分:4)

CommandLine.parse不会创建一个bash shell来解释你的管道。

如“How to pipe a string argument to an executable launched with Apache Commons Exec?”中所述:

  

您无法添加管道参数(|),因为[此处,在您的情况下]“git status”命令不会接受该参数。
  它是shell(例如bash)解释管道并在您将命令行键入shell时执行特殊处理

您应该使用 ByteArrayInputStream 将一个命令的输出提供给另一个命令;