Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Aug 2007 13:12:23 -0500
From:      Derek Ragona <derek@computinginnovations.com>
To:        Christer Hermansson <mail@chdevelopment.se>, freebsd-questions@freebsd.org
Subject:   Re: Regular expressions
Message-ID:  <6.0.0.22.2.20070818130942.02634918@mail.computinginnovations.com>
In-Reply-To: <46C726A8.9010404@chdevelopment.se>
References:  <46C726A8.9010404@chdevelopment.se>

next in thread | previous in thread | raw e-mail | index | archive | help
At 12:04 PM 8/18/2007, Christer Hermansson wrote:
>Hi.
>
>I'm trying to use regular expressions inside a shell script (/bin/sh) on 
>my freebsd box and can't get it to work so I searched the web  and found 
>http://regexlib.com/RETester.aspx
>
>On this webpage I could test my pattern "^[A-Za-z0-9_-]+$" and everything 
>was fine, did exactly what I wanted to do, check that a string only 
>contains some combination of the characters A-Z, a-z, 0-9, hyphen - and 
>underscore _.
>
>I also found some basic example at 
>http://www.grymoire.com/Unix/Sh.html#uh-88 :
>
>--------8<--------8<--------8<--------8<--------8<--------
>
>#!/bin/sh
>
>echo "Type in a number"
>read ans
>number=`expr "$ans" : "([0-9]*)"`
>if [ "$number" != "$ans" ]; then
>echo "Not a number"
>elif [ "$number" -eq 0 ]; then
>echo "Nothing was typed"
>else
>echo "$number is a fine number"
>fi
>
>--------8<--------8<--------8<--------8<--------8<--------
>
>The above example doesn't work on my freebsd box. Maybe I need to update 
>my system, sitting with 6.0R which never been updated.
>
>Is there anyone who has some advice about how to get regular expressions 
>to work in FreeBSD shell script ?
>
>--
>
>Christer Hermansson

You have a syntax error using expr.  Do a man on expr for more details but 
if you change that line from:
number=`expr "$ans" : "([0-9]*)"`
to:
number=`expr "$ans" : "\([0-9]*\)"`

You will get the desired results.

Also when debugging scripts remember to add:
set -x
to your script on the second line, and see what the script lines are 
actually doing.

         -Derek

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
MailScanner thanks transtec Computers for their support.




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