From owner-freebsd-questions@FreeBSD.ORG Sun May 15 20:44:41 2005 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8897816A4CE for ; Sun, 15 May 2005 20:44:41 +0000 (GMT) Received: from ylpvm29.prodigy.net (ylpvm29-ext.prodigy.net [207.115.57.60]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0C59743D92 for ; Sun, 15 May 2005 20:44:41 +0000 (GMT) (envelope-from mbsd@pacbell.net) Received: from pimout7-ext.prodigy.net (pimout7-ext.prodigy.net [207.115.63.58])j4FKiWIC000316 for ; Sun, 15 May 2005 16:44:32 -0400 X-ORBL: [66.126.169.252] Received: from sotec.home (adsl-66-126-169-252.dsl.snfc21.pacbell.net [66.126.169.252])j4FKiPMH224028; Sun, 15 May 2005 16:44:33 -0400 Date: Sun, 15 May 2005 13:44:20 -0700 (PDT) From: =?ISO-8859-1?Q?Mikko_Ty=F6l=E4j=E4rvi?= X-X-Sender: mikko@sotec.home To: Ian Smith In-Reply-To: Message-ID: <20050515133928.F10135@sotec.home> References: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed cc: freebsd-questions@freebsd.org Subject: Re: simple? sh problen X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 May 2005 20:44:41 -0000 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