1

我希望 Apache Commons-exec 运行:

混帐状态 | 头-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>...
4

1 回答 1

4

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

如“如何将字符串参数传递给使用 Apache Commons Exec 启动的可执行文件? ”中所述:

您不能添加管道参数 ( |),因为 [here, in your case] ' git status' 命令不会接受。
当您在 shell 中键入命令行时,解释管道并进行特殊处理的是 shell(例如 bash)

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

于 2013-03-14T07:14:57.367 回答