Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Aug 2001 16:53:43 -0700
From:      Drew Tomlinson <drewt@writeme.com>
To:        'parv' <parv_@yahoo.com>
Cc:        "'FreeBSD Questions (E-mail)'" <freebsd-questions@FreeBSD.org>
Subject:   RE: Shell Script Help - Comparing Strings
Message-ID:  <5CD46247635BD511B6B100A0CC3F023925A06B@ldcmsx01.lc.ca.gov>
In-Reply-To: <5CD46247635BD511B6B100A0CC3F0239E342B5@ldcmsx01.lc.ca.gov>

next in thread | previous in thread | raw e-mail | index | archive | help
> -----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
>
>
> this was, on the fateful occasion around Aug 14 18:43 -0400,
> sent by Drew Tomlinson
> >
> > As I continue in writing my first shell script, I can't
> figure out how to
> > compare strings properly.  For example, I want to run my
> script and pass an
> > argument to it from the command line.  However, if this
> argument is not
> > passed, then I want to set it to a defined value.  I'm
> trying to use the if
> > statement for this.  Here's a clip of my code:
> >
> > #! /bin/sh -vx
> >
> > #  8/8/01
> > #  An attempt to write script to run webalizer to generate
> web stats for all
> > #  virtual web sites.
> >
> > #  Set command line variables.  $1 = web to run.
> >
> > #  Set $1 to "www" if blank.
> > echo $1
> > if ["$1"=""]
> >   then $1 = "www"
> > fi
> ...
>
> > echo $1
> > + echo test
> > test
> > if ["$1"=""]
> >   then $1 = "www"
> > fi
> > + [test=]
> > [test=]: not found
> ...
>
> 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.

> ...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!  I'm sure I'll
come across it when I get into this further.  I've only had a intro unix
class so I only experienced the very basics.

Thanks,

Drew


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?5CD46247635BD511B6B100A0CC3F023925A06B>