【发布时间】:2011-03-27 22:18:24
【问题描述】:
我真正想做的就是确保管道中的所有内容都成功,并将最后一个标准输入分配给一个变量。考虑以下简化的场景:
x=`exit 1|cat`
当我运行declare -a 时,我看到了这个:
declare -a PIPESTATUS='([0]="0")'
我需要一些方法来注意exit 1,所以我将其转换为:
exit 1|cat|xargs -I {} x={}
而declare -a 给了我:
declare -a PIPESTATUS='([0]="1" [1]="0" [2]="0")'
这就是我想要的,所以我试着看看如果exit 1 没有发生会发生什么:
echo 1|cat|xargs -I {} x={}
但它失败了:
xargs: x={}: No such file or directory
有没有办法让 xargs 将 {} 分配给 x?让PIPESTATUS 工作并将标准输入分配给变量的其他方法呢?
注意:这些示例被简化了。我并没有真正使用exit 1、echo 1 或cat,而是使用这些命令进行简化,以便我们可以专注于我的特定问题。
【问题讨论】: