On Fri, Sep 21, 2018 at 04:17:11PM +0200, Enrique Soriano wrote: > > You're seeing the status from the creation of the background job (which is > > always 0), not from its completion. > > Ah, I see. > > Anyway, the behavior is not coherent with the manual page: in this > case, $? has the status from the creation of the background job, > that's not "the status of the most recently executed foreground > pipeline".
The thing that creates the background job IS a foreground pipeline. It's a foreground pipeline that creates a background job, if that makes sense. dualbus@ubuntu:~$ cat t.sh (exit 2) (exit 3) & pid=$! echo $? wait "$pid" echo $? dualbus@ubuntu:~$ bash t.sh 0 3 I recommend to store the value of $? in a variable if you plan on using it afterwards, since it's extremely easy to end up overriding its value.