]> git.ipfire.org Git - thirdparty/bash.git/blame - examples/functions/isnum.bash
Imported from ../bash-2.04.tar.gz.
[thirdparty/bash.git] / examples / functions / isnum.bash
CommitLineData
cce855bc
JA
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
5
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.
10
11# BASH NOTE: make sure you have executed `shopt -s extglob' before
12# trying to use this function, or it will not work
13
bb70624e 14isnum() # string
cce855bc
JA
15{
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
23}
bb70624e
JA
24
25isnum2() # string
26{
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
34}
35
36isint() # string
37{
38 case $1 in
39 ?([-+])+([0-9]) )
40 return 0;;
41 *) return 1;;
42 esac
43}
44
45isint2() # string
46{
47 case $1 in
48 ?([-+])+([[:digit:]]) )
49 return 0;;
50 *) return 1;;
51 esac
52}