我知道“set -o pipefail”用于传播管道的退出代码。但是,我想为输入重定向做类似的事情。具体来说,我希望这种情况发生:
$ cat <(echo abc; exit 1)
abc
$ echo $?
1
目前的行为是最后一行是'0'而不是'1'。
我如何做到这一点?不,我不能用管道。我给出的例子只是一个简化的测试用例。在实践中,我从多个来源获取意见。
答案 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'(零)。