All that I really want to do is make sure everything in a pipeline succeeded and assign the last stdin to a variable. Consider the following dumbed down scenario:
x=`exit 1|cat`
When I run declare -a
, I see this:
declare -a PIPESTATUS='([0]="0")'
I need some way to notice the exit 1
, so I converted it to this:
exit 1|cat|xargs -I {} x={}
And declare -a
gave me:
declare -a PIPESTATUS='([0]="1" [1]="0" [2]="0")'
That is what I wanted, so I tried to see what would happen if the exit 1
didn't happen:
echo 1|cat|xargs -I {} x={}
But it fails with:
xargs: x={}: No such file or directory
Is there any way to have xargs assign {}
to x
? What about other methods of having PIPESTATUS
work and assigning the stdin to a variable?
Note: these examples are dumbed down. I'm not really doing an exit 1
, echo 1
or a cat
, but used these commands to simplify so we can focus on my particular issue.