In the code below we wait
for a background process three times. In the first paragraph we get the expected 0 return code from the wait. In the second paragraph the only change is wrapping the wait in a command substitution which instead gives a 255 return code. In the third paragraph the only change is wrapping the wait in a subshell which gives a 127 return code. Why is this?
sleep 1 &
wait $!
echo $? # prints "0"
sleep 1 &
a=$(wait $!) # <---- only difference is cmd substitution
echo $? # prints "255"
sleep 1 &
(wait $! &>/dev/null) # <---- only difference is subshell
echo $? # prints "127"
Thanks in advance for your thoughts!
EDIT: updated to include the subshell final example also, which gives a clue
You must log in or register to comment.