On August 28, 2015 2:36:38 AM GMT+02:00, T B <[email protected]> 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 <[email protected]>
>wrote:
>
>> On Aug 2, 2015, at 8:49 AM, [email protected] 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