6
我目前想知道如何对链接命令进行错误处理。下面就是一个例子来简单的证明我的问题:在bash脚本中使用链接命令(管道)进行错误处理?
cat file | gzip >/tmp/test
如果猫失败(例如因为文件丢失),的gzip仍然执行和因此最后存储的退出代码$?是。 set -e在这种情况下也无济于事。
我想知道最佳解决方案是什么?
谢谢!
我目前想知道如何对链接命令进行错误处理。下面就是一个例子来简单的证明我的问题:在bash脚本中使用链接命令(管道)进行错误处理?
cat file | gzip >/tmp/test
如果猫失败(例如因为文件丢失),的gzip仍然执行和因此最后存储的退出代码$?是。 set -e在这种情况下也无济于事。
我想知道最佳解决方案是什么?
谢谢!
试试这个:
trap 'echo "ERR caught"' ERR
set -o pipefail
cat file | gzip >/tmp/test
输出文件仍将被创建(创建并行完成)和gzip
将运行,但你可以做清理工作。使用${PIPESTATUS[@]}
数组查看发生错误的位置。您可以使用$BASH_COMMAND
和$BASH_LINENO
获取有关错误的其他信息。
哇 - 非常酷。我不知道这种可能性。非常感谢! – aurora 2010-12-20 09:07:14
你试过'$ PIPESTATUS'吗?它应该为bash工作。 – khachik 2010-12-17 16:11:48
我甚至不知道,这是存在的。谢谢! – aurora 2010-12-20 09:07:49