3 ms·
Detecting command failures in bash
- gcb 17y agoso un-unix.
- silentbicycle 17y agoWell, it has bash in the title, so surprise surprise. If it were about detecting failed commands in Unix shells, all it would need to say is "$?", though. That's hardly worth a blog post. http://www.openbsd.org/cgi-bin/man.cgi?query=sh http://www.openbsd.org/cgi-bin/man.cgi?query=sh
- steveitis 17y agoThis article describes any easy way to do this incorrectly. It also has simple spelling errors, such as 'weather' for 'whether'. It is NOT what I've come to expect from HN. Downvotes for everyone involved. Oh. Right. I can't downvote. Damn.
- derobert 17y agoMuch better approach (assuming all your terminals use the same colors codes, you could of course use tput if not): RED="\[\033[31;1m\]" NORMAL="\[\033[0m\]" PS1_INSIDE='\u@\h:\w$bad\$ ' PS1="\` retcode=\$? ; if [ 0 -ne \$retcode ]; then bad=\" [\\\\\\\$?=\$retcode]\" echo \"$RED$PS1_INSIDE$NORMAL\" else bad=''; echo \"$PS1_INSIDE\"; fi; \`" unset RED NORMAL PS1_INSIDE Examples: anthony@Tao:~$ true anthony@Tao:~$ false anthony@Tao:~ [$?=1]$ # actually in bold red