Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Aug 2001 20:28:30 -0400
From:      'parv' <parv_@yahoo.com>
To:        Drew Tomlinson <drewt@writeme.com>
Cc:        "'FreeBSD Questions (E-mail)'" <freebsd-questions@FreeBSD.org>
Subject:   Re: Shell Script Help - Comparing Strings
Message-ID:  <20010814202830.A67894@moo.holy.cow>
In-Reply-To: <5CD46247635BD511B6B100A0CC3F023925A06B@ldcmsx01.lc.ca.gov>; from drewt@writeme.com on Tue, Aug 14, 2001 at 04:53:43PM -0700
References:  <5CD46247635BD511B6B100A0CC3F0239E342B5@ldcmsx01.lc.ca.gov> <5CD46247635BD511B6B100A0CC3F023925A06B@ldcmsx01.lc.ca.gov>

next in thread | previous in thread | raw e-mail | index | archive | help
this was, on the fateful occasion around Aug 14 19:53 -0400,
sent by Drew Tomlinson                                               
>
> > -----Original Message-----
> > From: parv [mailto:parv_@yahoo.com]
> > Sent: Tuesday, August 14, 2001 4:12 PM
> > To: Drew Tomlinson
> > Cc: FreeBSD Questions (E-mail)
> > Subject: Re: Shell Script Help - Comparing Strings
> >
> >
...

> > you need to add spaces between test operators...
> >
> > if [ "$1"="" ]  # notice the difference
> > then
> >  $1="www"
> > fi
> 
> I see but this didn't work for me either.  This is what I get.
> 
> if [ "$1"=="" ] #Tried with both single and double "="
>   then $1="www"
> fi
> + [ test== ]
> + test=www
> test=www: not found
> 
> Another poster explained that "=" sets a value but "==" should be used for
> comparing strings.  I tried it both ways but got the same error.

believe it or not, that's progress. error is not in the if 
condition but in the variable assignment.

you shouldn't have a '$' in there.  i missed it first time around...
guess i was not thinking deep...

now, if you remove '$', then you will still get another error; there 
may be a some way to assign a value to a positional parameter, but in 
your case, work isn't worth it. instead of assigning something to 
$1, use a letter/word variable like shown below.


> > ...but i would test the number of arguments, and set a non positional
> > variable instead...
> >
> > case $# in
> >  0)
> >  suffix=www
> >  ;;
> >
> >  *)
> >  suffix=$1
> >  ;;
> > esac
> >
> > ...but still better alternative, would be...
> >
> > suffix=${1:-www}
> 
> This is stuff I don't understand but thank you for sharing!

btw, another way to write that if condition...

if [ -z "$1"]  # true if length is zero
then
  ...
fi


you should take a look at test(1) and sh(1).

-- 
 so, do you like word games or scrabble?
	 - parv

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




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