1

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

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

当前行为是最后一行是“0”而不是“1”。

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

4

2 回答 2

0

我有一个使用@Lars建议的临时文件的示例:

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

如果排序且两个 zcat 成功,则返回代码将为“成功”(零)。

于 2012-05-11T17:30:30.537 回答
0

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

于 2012-05-08T16:14:22.397 回答