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]"