[Gllug] show non-zero exit code in bash
salsaman
salsaman at xs4all.nl
Wed Dec 28 19:22:57 UTC 2005
Tethys wrote:
>salsaman writes:
>
>
>
>>PROMPT_COMMAND='ret=$?; [ "x$ret" == "x0" ] || echo latest exit code $ret;'
>>
>>
>
>Errr... no. Try pressing return a few times after you've run a command
>with a non-zero exit code. You need to keep track of the fact that you've
>already printed the exit code. What you want is something like:
>
> show_exit_code()
> {
> retval=$?
> cmdnum="$(history 1 | sed 's/\(^[0-9 ]*\).*/\1/')"
> if [ $retval -ne 0 -a "$cmdnum" != "$lastcmdnum" ]
> then
> lastcmdnum="$cmdnum"
> echo "Exit code: $retval"
> fi
> }
>
> export PROMPT_COMMAND=show_exit_code
>
>This also handles the corner cases:
>
>- Successive commands with non-zero exit codes
>- "Null commands", i.e., pressing return at the shell prompt
>
>Easy enough, but it would be nice to have some zsh-like syntactic
>sugar to do this. Also, the use of history is a bit of a kludge.
>I was sure there was some built in shell variable to return the
>event number of the last command executed, but I can't find it in
>the man page.
>
>Tet
>
>
Well then, third time lucky:
PROMPT_COMMAND='ret=$?; [[ "x$ret" == "x0" || "x$cnum" == "x$HISTCMD" ]]
|| echo latest exit code $ret; cnum=$HISTCMD;'
Gabriel.
--
Gllug mailing list - Gllug at gllug.org.uk
http://lists.gllug.org.uk/mailman/listinfo/gllug
More information about the GLLUG
mailing list