Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我知道用于传播管道退出代码的“set -o pipefail”。但是,我想为输入重定向做类似的事情。具体来说,我希望这种情况发生:
$ cat <(echo abc; exit 1) abc $ echo $? 1
当前行为是最后一行是“0”而不是“1”。
我该如何做到这一点?不,我不能使用管道。我给出的例子只是一个简化的测试用例。在实践中,我从多个来源获取输入。
我有一个使用@Lars建议的临时文件的示例:
tmp=`mktemp`; sort -mk1 <(zcat 1.gz || rm -f $tmp) <(zcat 2.gz || rm -f $tmp) && rm $tmp
如果排序且两个 zcat 成功,则返回代码将为“成功”(零)。
恐怕你不能用输入重定向来做到这一点。也许有提供输入的进程将其退出状态写入文件并稍后检查?