simple? sh problen
Mikko Työläjärvi
mbsd at pacbell.net
Sun May 15 13:44:41 PDT 2005
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
More information about the freebsd-questions
mailing list