tcsh's exit codes

Johan van Selst johans at stack.nl
Sat Jun 23 17:14:11 UTC 2012


rank1seeker at gmail.com wrote:
> There is something wrong with tcsh shell:
> 
> # mergemaster -V | grep '\--run-updates'
>     Returned exit code 1
> # mergemaster -V | grep -q '\--run-updates'
>     Returned exit code 141

I believe this has been a feature of csh and tcsh since the dark ages.
Negative status codes propagate through pipelines (and through backtick
sub-commands as well). In fact the returned $status value is the value
of the last command that returned an error (non-zero) status code.
This makes it easy to determine if a pipeline command sequence has
failed.

The 141 status code indicates a sigpipe: the pipeline was not completely
read (as described in the grep manual for this case). This also is the
common exit code when using head(1) for example.

This error-propagation behaviour can be suppessed with 'unset anyerror'
in tcsh. In that case it should work as you expect. But note that your
commands are no longer compatible with 'good old' csh behaviour then.


Regards,
Johan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20120623/eb86197f/attachment.pgp


More information about the freebsd-hackers mailing list