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>

index | next in thread | previous in thread | raw e-mail

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.



home | help

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