Date: Sun, 15 May 2005 13:44:20 -0700 (PDT) From: =?ISO-8859-1?Q?Mikko_Ty=F6l=E4j=E4rvi?= <mbsd@pacbell.net> To: Ian Smith <smithi@nimnet.asn.au> Cc: freebsd-questions@freebsd.org Subject: Re: simple? sh problen Message-ID: <20050515133928.F10135@sotec.home> In-Reply-To: <Pine.BSF.3.96.1050516041643.18128B-100000@gaia.nimnet.asn.au> References: <Pine.BSF.3.96.1050516041643.18128B-100000@gaia.nimnet.asn.au>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 16 May 2005, Ian Smith wrote: > Hopefully not too OT .. the only silly question being the unasked one .. > > How do I test whether a sh argument is an integer or not, so as to avoid > failing on a syntax error from otherwise working code such as: > > [ $3 -lt 10 -o $3 -gt 600 ] && echo "$0 $1 $2: $3 invalid" && exit 1 > > when $3 is a non-integer argument? Do I need to delve into awk and REs, > or is there something more simple I've missed in mans test, expr, etc? Here are some suggestions for functions to do the test: isnum() { expr "$1" : '^[0-9][0-9]*$' >/dev/null } isnum() { case "$1" in *[^0-9]*|'') return 1;; esac return 0 } The second one is likely to be faster unless "expr" is a shell builtin (typically it it not). $.02, /Mikko
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050515133928.F10135>