我希望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>...
答案 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
将一个命令的输出提供给另一个命令;