gpt4 book ai didi

bash - 监视管道退出代码

转载 作者:行者123 更新时间:2023-11-29 09:44:07 26 4
gpt4 key购买 nike

我有一个 Bash 脚本,它生成一个巨大 shell 管道作为后台进程,然后生成各种其他进程,这些进程通过命名管道与其通信。 (听起来很复杂?好吧,是这样!)看起来像这样:

generate_stuff | tee >(process1) >(process2) | process3 | save_stuff &

该脚本工作正常,但是...它不能正确处理错误。有多种错误情况会导致管道中的一个或多个命令失败。目前脚本盲目地报告一切正常,而实际上只有 一些 命令成功完成。

有什么方法可以检查所有 命令是否以退出代码零结束?希望不要让这个巨大的脚本变得比现在更复杂......?

最佳答案

您使用 $PIPESTATUS :“保存最后执行的前台管道退出状态的数组变量。”查看更多详情 here .

$ echo ok | tee | grep ko | cat
$ echo ${PIPESTATUS[@]}
0 0 1 0

背景管道可以试试

$ ( echo ok | tee | grep ko | cat ; echo ${PIPESTATUS[@]} ) &
[1] 16660
0 0 1 0
[1]+ Done ( echo ok | tee | grep ko | cat; echo ${PIPESTATUS[@]} )

关于bash - 监视管道退出代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20290807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com