【发布时间】:2010-12-05 18:36:06
【问题描述】:
我目前有一个类似的脚本
./a | ./b | ./c
我想修改它,以便如果 a、b 或 c 中的任何一个以错误代码退出,我会打印一条错误消息并停止,而不是转发错误的输出。
最简单/最干净的方法是什么?
【问题讨论】:
-
确实需要像
&&|这样的东西,这意味着“只有在前面的命令成功时才继续管道”。我想您也可以拥有|||,这意味着“如果前面的命令失败,则继续管道”(并且可能会像 Bash 4 的|&一样通过管道传输错误消息)。 -
@DennisWilliamson,您不能“停止管道”,因为
a、b、c命令不是按顺序运行而是并行运行。换句话说,数据按顺序从a流向c,但实际的a、b和c命令(大致)同时开始。
标签: shell error-handling pipe