Consider the following:
true
a=$? b=`exit 1` b=$? >`echo /dev/null; exit 2`
echo $? $a $b
Having read the relevant sections of the standard a couple times, I
would expect the output to be `1 0 0'; but that's not the case with
most shells. Below are what each shell I have on my computer output
for that script.
? a b
bash 2 0 1
bosh 2 0 0
dash 1 0 0
ksh 2 0 1
mksh 1 0 0
yash 2 0 0
zsh 1 2 1
Now, I wonder, what did I miss? Where does it say in the standard that
the value of parameter `?' is affected by redirections, and that its
value depends on assignments that appear earlier in the same command?
Regards,
Oğuz