Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 Sep 2001 11:05:37 +0300
From:      Peter Pentchev <roam@ringlet.net>
To:        Adrian Filipi-Martin <adrian@ubergeeks.com>
Cc:        Ulf Zimmermann <ulf@Alameda.net>, hackers@FreeBSD.ORG
Subject:   Re: Question about what programs to use in /etc/rc*
Message-ID:  <20010910110537.A2053@ringworld.oblivion.bg>
In-Reply-To: <20010909180325.T36056-100000@lorax.ubergeeks.com>; from adrian@ubergeeks.com on Sun, Sep 09, 2001 at 06:06:01PM -0400
References:  <20010909024721.B1500@seven.alameda.net> <20010909180325.T36056-100000@lorax.ubergeeks.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Sep 09, 2001 at 06:06:01PM -0400, Adrian Filipi-Martin wrote:
> On Sun, 9 Sep 2001, Ulf Zimmermann wrote:
> 
> > These are some examples strings:
> >
> > "dhcp"
> > "dhcp media 10baseTX"
> > "media 10baseTX dhcp mediaopt half-duplex"
> >
> > The following code will get me inside a if condition:
> >
> > 	if [ `expr "${ifconfig_args}" : '.*[Dd][Hh][Cc][Pp].*'` -ne 0 ]; then
> >
> > 		....
> >
> > 	fi
> 
> 	You do everything you need within sh.  Someone else pointed out
> that case/esac is your friend here.  It was not quite complete.  Here's
> more complete example that will let you pair up the options and their
> arguments if they take them.
> 
> ifconfig_args="media 10baseTX dhcp mediaopt half-duplex"
> set -- ${ifconfig_args}
> while [ $# -gt 0 ]; do
>     op=$1
>     case ${op} in
>         [Mm][Ee][Dd][Ii][Aa])
>             op_arg=$2
>             shift
>             echo "op=media op_arg=${op_arg}"
>             ;;

I don't like this.  This second-guessing of ifconfig(8)'s arguments
is prone to error - consider the case of a new keyword added to
ifconfig(8)..  And blindly discarding unrecognized keyword would
not really work either - a new keyword might take an argument,
the shell script has no way of knowing that, so it would skip
the keyword and try to look at its argument as another keyword;
what if a keyword takes a string argument of, oh, say, 'dhcp'? :)

A ${args#dhcp} might work better, but there is a problem with it -
the # match is case-sensitive, and I *know* that there are people
using 'dhcp' and people using 'DHCP' :)

G'luck,
Peter

-- 
This would easier understand fewer had omitted.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010910110537.A2053>