problem facing in if -else condition

can u plz tell me where is the error

echo enter the filename to be searched
read fname
if [ -e $fname ] #-d $fname
then
   echo file exists
   if [ -d $fname ]
   then
        echo itsa directory
   elif [ -r $fname ]
   then
      echo its readable
      cat $fname
   else
       echo its not readable
   fi
else
   echo file does not exist
fi

###################################
in fact i want to achieve an inner if condition to be executed when the outer If holds true..

How about:

echo enter the filename to be searched
read fname
if [ -e $fname ] #-d $fname
then
  echo file exists
  if [ -d $fname ]
  then
    echo itsa directory
  elif [ -r $fname ]
    then
      echo its readable
      cat $fname
  else
    echo its not readable
  fi
else
  echo file does not exist
fi

It is advisable to use indentation so it becomes easier to understand the code.