On August 28, 2015 2:36:38 AM GMT+02:00, T B <phreakoci...@gmail.com> wrote: >Resurrecting this not-too-old thread. You might find this one useful >if >you run CARP firewalls which gives you a dynamic prompt telling you the >master/backup/other status. > >function fwStatus { > IFCONFIG=`ifconfig -a | grep carp:` > NUMCARPS=`echo "$IFCONFIG" | wc -l` > BACKUPCARPS=`echo "$IFCONFIG" | grep 'carp: BACKUP' | wc -l` > MASTERCARPS=`echo "$IFCONFIG" | grep 'carp: MASTER' | wc -l` > > if [[ "$MASTERCARPS" == "$NUMCARPS" ]]; then > printf master > elif [[ "$BACKUPCARPS" == "$NUMCARPS" ]]; then > printf backup > else > printf other > fi >}
I'm pretty sure this messes up $? at the prompt. Try: false echo $? You could circumvent this by saving $? at the beginning of the function and returning it at the end. /Alexander > >HOSTNAME=`hostname -s` >PS1='${USER}@${HOSTNAME}:${PWD} ($(fwStatus)) $ ' > > >On Wed, Aug 5, 2015 at 1:43 AM, Sean Kamath <kam...@moltingpenguin.com> >wrote: > >> On Aug 2, 2015, at 8:49 AM, li...@wrant.com wrote: >> >> >> never >> >> thought of using a shell function in .profile till I read this >thread. >> > >> > ... >> > >> > Functions has always been impressive once you move past the alias >> > shortcomings (can't handle arguments etc), so also worth a read the >> > "Functions" section. >> >> >> Functions have been amazingly useful and impressive for a very long >time. >> They are also not limited to ksh. In fact, my introduction to this >very >> useful aspect of shell programming was from Sun's rcS script, which >has >> this: >> >> # Simulates cat in sh so it doesn't need to be on the root >filesystem. >> # >> shcat() { >> while [ $# -ge 1 ]; do >> while read i; do >> echo "$i" >> done < $1 >> shift >> done >> } >> >> >> There have been times when I've been on systems in single user mode >> without filesystems, and knowing how to do some things we typically >use >> external programs for in the shell can be a lifesaver, like "echo *" >as a >> poor man's "ls". >> >> If your directory isn't *that* large, 'for i in *; do echo $i; done >| wc >> -l' works well. Well, for some definition of 'well'. >> >> My point is that shell functions allow you to do some fairly complex >> stuff, and if you're careful, you can avoid execs. There are places >the >> shell forks, however. It can be a fun exercise to find them with >profiling >> tools. :-) >> >> Sean