Epic - Validate input size

Is there an easy way to validate an input field size. Let us say a script is asking to enter 10 digits mobile number, how do I write a script to validate it is numeric and is 10 digits in length? I just need an easy way w/o using looks ...etc. Is there such a away ?

Here is what I have so far and it looks like it is working, but is there an easier way?

print -n "Enter your Mobile 10 digit number to turn off ....? " ; read mobile
if  echo $mobile | egrep -q '^[0-9]+$' ; then
 echo "You have entered = $mobile"
else
 echo "IF-Invalid number <$mobile> entered. Entry must be numeric ..."
 exit 255
fi
echo  "..................."
case $mobile in
     [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]) echo "You have entered = $mobile" ;;
         *) echo "Mobile number <$mobile> size entered is not a 10 digits number ...."
            exit 255;;
esac
if echo $mobile | egrep -q '^[0-9]{10}$'
then
    # Number entered has 10 digits
else
    # Not a number or does not have 10 digits
fi
read mobile

if [[ "$mobile" != +([0-9]) ]]
then
        # Not numeric
else
        # Is numeric
fi

if [[ ${#mobile} -eq 10 ]]
then
      # Is 10 digits
else
      # Not 10 digits
fi

I also have another question:

After I validate the number, i need to find it in a file which has this format:

Data file:
8165886666@myairmail.com
8164445555@myairmail.com

How do I search for 816444555 in the file and check if it starts with a # "Commented out" and if it does skip it. Else a # in front of it in the same input file?

Thanks

Try

$ grep "$mobile" file
#8164445555@myairmail.com
8164445555@myairmail.com
$ grep "^$mobile" file
8164445555@myairmail.com
numbers()
{
  str="$1"
  len=$2
  # replace all numbers with nothing = rest is not numbers
  notnumbers=${str//[0-9]/}
  [ "$notnumbers" != "" ] && return 1
  [ ${#str} != $len ]  && return 2
  return 0
}

#####

for tst in abc123 0123456789 123ABC123A 5555666666 677676767676 66262626266
do
        numbers "$tst" 10 && echo "$tst OK" || echo "$tst not ok"
done

If you're using bash or ksh, you could read -N10 mobile to read exactly 10 chars. mobile=${mobile//[^[:digit:]]/} will eliminate any non-digit character in mobile, so you could check its length or do any other check...