从zsh脚本中的管道中间中止

时间:2013-10-21 17:52:33

标签: shell zsh

我在zsh脚本中有一个看起来像这个

的复杂管道
comm -23 \
    <( git ... ) \
    <( git ... |
        sed ... ) | ...

现在,如果其中一个git命令失败,我想提前退出我的脚本。最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

我只是将命令分成多行。如果comm失败,则无需启动git

trap 'rm -f tmp1 tmp2' EXIT
git ... > tmp1 || exit
git ... | sed ... > tmp2 || exit
trap - EXIT
comm -23 tmp1 tmp2 | ...

如果您希望在trap失败时删除临时文件,则对git的调用是可选的。