[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