hey guys, can anyone tell me what's wrong with my code?
im trying to test if the input ($no) is a number:

read no
echo $no | egrep - c "^[0-9]*$" | wc -l > y

y now should be 1 if the user enters a number but i get an empty string

ah! sorry error on copy-pate!
if u try that it works, but prints " 1", not "1"
and when u put it in y u get blank string

best way is (works only for integers)

declare -i no
read no
if [ $no = 0 ]; then
 echo "user enter 0, nothing or not number"
 echo "here you go"

or if you want to use regexp

read no
if [[ "$no" =~ /^[.0-9]{1,}$/ ]]; then
 echo "or something like this"

if you like my reply, click here ;-) : https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=pheeror%40gmail%2ecom&item_name=pheeror&no_shipping=0&no_note=1&tax=0&currency_code=USD&bn=PP%2dDonationsBF&charset=UTF%2d8

hm..well i haven't test it yet but i believe u :P
can anyone tell me whats wrong with my code tho? actually, how can i fix it? is there a trim function?


You're redirecting the output to a file called y, not into a variable $y. And do you need wc? You have the number of lines from using egrep -c.

thanks for the replies but i still have a problem with it

read no
echo $no | egrep -c '^[0-9]+$' > $y
echo "-->$y---"

when i give a number, this prints 1 and then -->---. It doesn't make sense. I'm redirecting the output to y but it goes to the screen. any ideas?

awk is a great solution and thanks but i'm not allowed to use it

now you redirect output of

echo $no | egrep -c '^[0-9]+$'

to file with name (value of) $y
what you want is

y=`echo $no | egrep -c '^[0-9]+$'`


y=$(echo $no | egrep -c '^[0-9]+$')

but you have to read some basics of bash scripting

This article has been dead for over six months. Start a new discussion instead.