Martin McCormick <[EMAIL PROTECTED]> writes:

>       I am ashamed to admit that I have been writing shell
> scripts for about 15 years but this problem has me stumped. $0
> is the shell variable which contains the script name or at least
> what name is linked to the script. The string in $0 may or may
> not contain a path, depending upon how the script was called. It
> is easy to strip off the path if it is always there
>
> #! /bin/sh
> PROGNAME=`echo $0 |awk 'BEGIN{FS="/"}{print $NF}'`
> echo $PROGNAME

As said by others, you can use `basename`. Apart from this, you can
fix your old habit by prepending a '/' before '$0', like this:

#! /bin/sh
PROGNAME=`echo /$0 |awk 'BEGIN{FS="/"}{print $NF}'`
echo $PROGNAME

Last, you can also use variable expansions mechanisms by saying:

PROGNAME="${0##*/}"

The main difference with `basename` way is that the latter do not call
a subprogram.

(If you are sure there is no space in your name, you can remove the
quotes, but are you sure?)

See `Parameter Expansion' in sh(1).
-- 
Best wishes,
Michaël
_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to