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
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to