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 [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to