On Sat, Nov 10, 2018 at 10:44:03AM +0100, Peter Krefting wrote: > >$ echo false | dbclient -T r...@host.example.com > >$ echo $? > >0 > > That is because $? contains the exit status of the left-most command (echo), > not the pipe. If you are using a bash shell, you need to use PIPESTATUS to > find it, read more at: https://unix.stackexchange.com/a/73180
I feel this deserves correction and clarification, because it is possible to encounter contradicting statements from different sources. Long ago the status reporting from a shell pipe was a contentious issue, the rules varied with time and between different shells. Nowadays it is consistent, reporting the status of the _last_ command in the pipe: $ false | true; echo "$?" 0 $ true | false; echo "$?" 1 The cited link above discusses reporting of status from some member of the pipe which is _not_ the rightmost, in a modern shell. Cheers, Rune