1isnum2()
2{
3	case "$1" in
4	'[-+]' | '')	return 1;;	# empty or bare `-' or `+'
5	[-+]*[!0-9]*)	return 1;;	# non-digit with leading sign
6	[-+]*)		return 0;;	# OK
7	*[!0-9]*)	return 1;;	# non-digit
8	*)		return 0;;	# OK
9	esac
10}
11
12# this one handles floating point
13isnum3()
14{
15	case "$1" in
16	'')		return 1;;	# empty
17	*[!0-9.+-]*)	return 1;;	# non-digit, +, -, or .
18	*?[-+]*)	return 1;;	# sign as second or later char
19	*.*.*)		return 1;;	# multiple decimal points
20	*)		return 0;;	# OK
21	esac
22}
23