On Tue, June 24 at 8:03 AM EDT David selby <[EMAIL PROTECTED]> wrote:
> Colin Watson wrote: > > >On Mon, Jun 23, 2003 at 07:57:07PM +0100, David selby wrote: > > > > > >>My bash masterpeice is almost complete ... I have one last problem > >that >no matter how many "" or '' I use I cannot get around. > >> > >>I need to use an if...then construct to check that my 4 digit date > >field >is 4 numerical digits.This is for error checking. I thought > >[sets] was >the way to go .... > >> > >>if [ $fourdig = [0-9][0-9][0-9][0-9] ]; then ...... > >> > >> > > > >Nope - read the expr(1) manual page to find out how to do pattern > >matching. And yes, you do need quotes (single quotes, unless you know > >you need to interpolate something within double quotes) around that > >to stop the shell accidentally expanding it to any files with > >four-digit filenames in the current directory. > > > > > > > >>It has occured to me that perhaps [sets] are not allowed as a > >>conditional test. > >> > >> > > > >They aren't. [ ... = ... ] tests *equality*, not pattern matching. > > > >Cheers, > > > > > > > Yes, fundermental misunderstanding on my part, this grep ^[0-9]*$ is > an ingenious solution, Im still trying to get my head around ..... Will that test for 4 digits or a string of digits? What about this little change:if echo $fourdig | grep '^[0-9]\{4\}$' > /dev/null 2>&1; ? Shawn Lamson [EMAIL PROTECTED] Debian GNU/Linux 3.0 -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]