如何为每个结果调用一个命令?

How to invoke a command for each result?

我想为执行命令的每个结果调用一个命令。特别是,我想为 hg status 返回的每个结果调用 hg diff <filename>。是否可以使用单个 bash 命令来完成?

例如,hg status返回:

M project/pom.xml
M project/api/pom.xml

我想对 project/pom.xmlproject/api/pom.xml 执行 hg diff。我该怎么做?

如果您想查看所有修改过的文件,您可以 运行 hg diff 不带参数。

更一般地说,您可以使用类似

的东西
hg status -mn0 | xargs -0 hg diff

此处 hg status -mn0 打印由空字节分隔的修改文件的文件名,这是比换行符更好的分隔符,因为文件名可以包含换行符,并通过管道传递整个内容 xargs -0 hg diff,它在空字节处拆分其输入并为每个标记调用 hg diff。这可以用于各种命令,而不仅仅是 hg diff.