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

标签 shell ant pipe

我正在尝试使用 Ant 中的“exec”任务运行以下命令:

ls -l /foo/bar | wc -l

目前,我的执行官看起来像这样:
<exec executable="ls" outputproperty="noOfFiles">
    <arg value="-l" />
    <arg value="/foo/bar" />
    <arg value="|" />
    <arg value="wc" />
    <arg value="-l" />
</exec>

'ls' 命令看起来有效,但很难将输出传送到 'wc'。有什么建议?

最佳答案

如果您使用 sh -c正如 Aaron 建议的那样,您可以将整个管道作为单个 arg 传递,从而有效地执行以下操作:

sh -c "ls -l foo/bar | wc -l"

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

请注意,在我的系统上,ls -l包括找到的文件总数和列表,这意味着显示的计数比文件数多一个。所以建议:
<exec executable="sh" outputproperty="noOfFiles">
    <arg value="-c" />
    <arg value="ls foo/bar | wc -l" />
</exec>

关于shell - 如何使用 Ant exec 任务运行管道命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3931608/

相关文章:

java - 类路径中的 Ant-JUnit 错误 : Ant wants the JUnit . jar

java - 自定义 Ant 构建和 JavaFX

c - 管道中传输的数据是垃圾

linux - 从 shell 脚本解析日期以计算证书到期前的天数

linux - 查找出现 2 个给定单词的文件,并显示出现单词的行

linux - 在 oracle 过程中运行 shell 脚本

javascript - 如何使用ant build在js文件中附加字符串

python - 如何将未压缩的视频从 FFMPEG 子进程传输到 python?

javascript - 在 Node.js 中使用流来缓冲 HTTP 通信

linux - 将输出重定向到文件 shell 脚本