Patch-ID: bash40-021
[bash.git] / examples / functions / isnum.bash
blobb733965782dbcc5b319499f1b9b32e7242120e4f
1 #From: jrmartin@rainey.blueneptune.com (James R. Martin)
2 #Newsgroups: comp.unix.shell
3 #Subject: Re: testing user input on numeric or character value
4 #Date: 26 Nov 1997 01:28:43 GMT
6 # isnum returns True if its argument is a valid number,
7 # and False (retval=1) if it is any other string.
8 # The first pattern requires a digit before the decimal
9 # point, and the second after the decimal point.
11 # BASH NOTE: make sure you have executed `shopt -s extglob' before
12 # trying to use this function, or it will not work
14 isnum() # string
16 case $1 in
17 ?([-+])+([0-9])?(.)*([0-9])?([Ee]?([-+])+([0-9])) )
18 return 0;;
19 ?([-+])*([0-9])?(.)+([0-9])?([Ee]?([-+])+([0-9])) )
20 return 0;;
21 *) return 1;;
22 esac
25 isnum2() # string
27 case $1 in
28 ?([-+])+([[:digit:]])?(.)*([[:digit:]])?([Ee]?([-+])+([[:digit:]])) )
29 return 0;;
30 ?([-+])*([[:digit:]])?(.)+([[:digit:]])?([Ee]?([-+])+([[:digit:]])) )
31 return 0;;
32 *) return 1;;
33 esac
36 isint() # string
38 case $1 in
39 ?([-+])+([0-9]) )
40 return 0;;
41 *) return 1;;
42 esac
45 isint2() # string
47 case $1 in
48 ?([-+])+([[:digit:]]) )
49 return 0;;
50 *) return 1;;
51 esac