52 lines
1.2 KiB
Bash
52 lines
1.2 KiB
Bash
#From: jrmartin@rainey.blueneptune.com (James R. Martin)
|
|
#Newsgroups: comp.unix.shell
|
|
#Subject: Re: testing user input on numeric or character value
|
|
#Date: 26 Nov 1997 01:28:43 GMT
|
|
|
|
# isnum returns True if its argument is a valid number,
|
|
# and False (retval=1) if it is any other string.
|
|
# The first pattern requires a digit before the decimal
|
|
# point, and the second after the decimal point.
|
|
|
|
# BASH NOTE: make sure you have executed `shopt -s extglob' before
|
|
# trying to use this function, or it will not work
|
|
|
|
isnum() # string
|
|
{
|
|
case $1 in
|
|
?([-+])+([0-9])?(.)*([0-9])?([Ee]?([-+])+([0-9])) )
|
|
return 0;;
|
|
?([-+])*([0-9])?(.)+([0-9])?([Ee]?([-+])+([0-9])) )
|
|
return 0;;
|
|
*) return 1;;
|
|
esac
|
|
}
|
|
|
|
isnum2() # string
|
|
{
|
|
case $1 in
|
|
?([-+])+([[:digit:]])?(.)*([[:digit:]])?([Ee]?([-+])+([[:digit:]])) )
|
|
return 0;;
|
|
?([-+])*([[:digit:]])?(.)+([[:digit:]])?([Ee]?([-+])+([[:digit:]])) )
|
|
return 0;;
|
|
*) return 1;;
|
|
esac
|
|
}
|
|
|
|
isint() # string
|
|
{
|
|
case $1 in
|
|
?([-+])+([0-9]) )
|
|
return 0;;
|
|
*) return 1;;
|
|
esac
|
|
}
|
|
|
|
isint2() # string
|
|
{
|
|
case $1 in
|
|
?([-+])+([[:digit:]]) )
|
|
return 0;;
|
|
*) return 1;;
|
|
esac
|
|
}
|