如何在bash中传播输入重定向的非零退出代码?

时间:2012-05-08 16:01:01

标签: bash redirect exit-code

我知道“set -o pipefail”用于传播管道的退出代码。但是,我想为输入重定向做类似的事情。具体来说,我希望这种情况发生:

$ cat <(echo abc; exit 1) 
abc
$ echo $?
1

目前的行为是最后一行是'0'而不是'1'。

我如何做到这一点?不,我不能用管道。我给出的例子只是一个简化的测试用例。在实践中,我从多个来源获取意见。

2 个答案:

答案 0 :(得分:0)

你不能用输入重定向来做到这一点我害怕。也许让提供输入的进程将其退出状态写入文件并稍后检查?

答案 1 :(得分:0)

我在这里使用@Lars建议的临时文件示例:

tmp=`mktemp`; sort -mk1 <(zcat 1.gz || rm -f $tmp) <(zcat 2.gz || rm -f $tmp) && rm $tmp

如果排序并且两个zcats成功,返回代码将为'success'(零)。