我查看了Exiting a pipeline if a former command fails但我正在寻找一个更通用的解决方案来解决这个问题:
chlist -q -v -m -r $sourcelist | \
grep '^USER:' | \
chlist -q -v -f - $superlist
问题是如果第一个 chlist 失败而不是没有输入到第二个 chlist 确实非常糟糕。
除了将第一个 chlist 的输出放入临时文件然后检查退出状态(例如根本不使用管道)之外,是否有任何解决方案可以阻止第二个 chlist 运行?
管道中的所有命令都是异步启动的,因此如果要确保在没有输入的情况下最后一个命令不运行,则需要按照建议拆分管道。或者,也许
chlist
(我不知道)可以选择为你做这件事。在进一步解决这个问题之后,我想到了下面的想法,我认为这可能是一个可行且非常通用的解决方案:
(为了清楚起见,我在这里省略了
grep
,但这在那里工作得很好)另一个(更清洁?)变体:
如何将虚拟行附加到满足最后一个输入要求但不触发操作的第一个命令的输出?