shell – 如何使用Ant exec任务来运行管道命令?

前端之家收集整理的这篇文章主要介绍了shell – 如何使用Ant exec任务来运行管道命令?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Ant中的“exec”任务来运行以下命令:
  1. ls -l /foo/bar | wc -l

目前,我的执行官看起来像这样:

  1. <exec executable="ls" outputproperty="noOfFiles">
  2. <arg value="-l" />
  3. <arg value="/foo/bar" />
  4. <arg value="|" />
  5. <arg value="wc" />
  6. <arg value="-l" />
  7. </exec>

‘ls’命令看起来正在工作,但是很难将输出配置为“wc”。有什么建议么?

如果你像Aaron所说的那样使用sh -c,你可以将整个管道作为一个参数传递,有效地做到:
  1. sh -c "ls -l foo/bar | wc -l"

如果使用单独的args,它们将被sh消耗,而不是传递给ls(因此您只看到当前目录)。

请注意,在我的系统上,ls -l包括一个总数以及找到的文件列表,这意味着显示的计数比文件数量多一个。所以建议:

  1. <exec executable="sh" outputproperty="noOfFiles">
  2. <arg value="-c" />
  3. <arg value="ls foo/bar | wc -l" />
  4. </exec>

猜你在找的Bash相关文章