Carl Johnson <ca...@peak.org> writes: > Carl Johnson <ca...@peak.org> writes: > >> vogelke+u...@pobox.com (Karl Vogel) writes: >> >>>>> On Thu, 24 Jun 2010 09:24:39 +0800, >>>>> Aiza <aiz...@comclark.com> said: >>> >>> A> Receiving a variable from the command line that is suppose to contain >>> A> numeric values. How do I code a test to verify the content is numeric? >>> >>> The script below will work with the Bourne or Korn shell. >>> Results for "0 1 12 1234 .12 1.234 12.3 1a a1": >>> >>> 0 is numeric >>> 1 is numeric >>> 12 is numeric >>> 1234 is numeric >>> .12 is numeric >>> 1.234 is numeric >>> 12.3 is numeric >>> 1a is NOT numeric >>> a1 is NOT numeric >> >> You might want to try testing "123..45". >> I tried changing: >>> if expr "$arg" : "[0-9]*[\.0-9]*$" > /dev/null >> to: >> if expr "$arg" : "[0-9]*\.*[0-9]*$" > /dev/null >> but it still claims that it is numeric, so *I* must be missing >> something. > > I just realized that I had a stupid mistake there and should have > used: > if expr "$arg" : "[0-9]*\.[0-9]*$" > /dev/null And of course that was another stupid mistake that I didn't test properly. I really wanted 0 or 1 decimal points, so I wanted '\.\?', except that FreeBSD expr doesn't recognize '\?'. I finally ended up with the following which seems to work as *I* expected it to work: if expr "$arg" : "[1-9]*\.\{0,1\}[0-9]*$" > /dev/null
-- Carl Johnson ca...@peak.org _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"