checking a number

ok im trying to find out how many cars a user enters. Its giving me an error message of "integer expression expected"

Basically if i enter any number over 0 (zero) it should continue

read -p "How many cars:" carsn
        test $cars -ge 1
        test $? -ne 0 && read -p "Invalid number. Please re-enter:" carsn

Edit: it accepting numbers but should i use && [A-Z][a-z] to test if a letter is entered. (letters shouldnt be accepted only numbers)

What language ( or shell...)?

bash,

i just tried && -ne [A-Z][a-z] doesnt work

test $carsn -ge 1

but doesnt that only check if a number was entered?
Im also trying to make it so if a letter is entered it doesnt accept

Method for testing for integer by deleting all the numeric characters and checking whether anything is left over.
The "for" loop is just for testing:

for field in 10.44 11 .6 abcd a3 7z 10000273
do
        if [ -z "`echo ${field} | tr -d '[0-9]'`" ]
        then
                echo "${field} is INTEGER"
        else
                echo "${field} is NOT INTEGER"
        fi
done
10.44 is NOT INTEGER
11 is INTEGER
.6 is NOT INTEGER
abcd is NOT INTEGER
a3 is NOT INTEGER
7z is NOT INTEGER
10000273 is INTEGER

There is an example above about how to test that the valid integer is greater than zero.

but im testing this in my case/while loop, so i don't think i can do the above^

Can we see more of the structure of the script?
Is the "read -p" deliberate (read from a Pipeline)?

read -p "How many cars:" carsn        
test $carsn -ge 1 && $carsn -ne [A-Z][a-z]         
test $? -ne 0 && read -p "Invalid number. Please re-enter:" carsn

i get this error message

./cars.bash: line 52: 4: command not found