Interactive menu

Hi ,some time ago i did an interactive menu based on eval function for navigation , one of the post remind me it. I think it could be handy for others.

#!/usr/bin/ksh

keyRead ()
{
tput smso
echo "Enter option."
tput rmso
oldstty=$(stty -g)
stty -icanon -echo min 1 time 1
Answer=$(dd bs=1 count=1 2>/dev/null)
stty "${oldstty}"
}


menu1()
{
#set -x
clear 
echo "MENU1"
echo "====="
echo "1-MENU11"
echo "2-MENU12"
echo "0-BACK"
keyRead
menu
}
menu11()
{
#set -x
clear 
echo "MENU11"
echo "====="
echo "0-BACK"
keyRead
menu
}
menu12()
{
clear 
echo "MENU12"
echo "====="
echo "0-BACK"
keyRead
menu
}
menu2()
{
clear 
echo "MENU2"
echo "====="
echo "0-BACK"
keyRead
menu
}
menu3()
{
clear 
echo "MENU3"
echo "====="
echo "1-MENU31"
echo "2-MENU32"
echo "0-BACK"
keyRead
menu
}
menu31()
{
clear 
echo "MENU31"
echo "====="
echo "1-MENU311"
echo "0-BACK"
keyRead
menu
}
menu311()
{
clear 
echo "MENU311"
echo "====="
echo "0-BACK"
keyRead
menu
}
menu312()
{
clear 
echo "MENU312"
echo "====="
echo "0-BACK"
keyRead
menu
}


menuExit ()
{
sufix=$(echo ${sufix}|awk '{printf("%s",substr($0,1,length-1))}')
current="menu${sufix}"
Answer=""
eval ${current}
}


menu ()
{
if [ "${Answer}." = "." ]
then
   clear
   echo "MAIN MENU"
   echo "=============="
   echo "1-MENU1"
   echo "2-MENU2"
   echo "3-MENU3"
   echo "0-BACK"
   keyRead
fi
while true
do
   case ${Answer} in
      0) if [ "${current}." = "menu." ]
         then
            exit 0
         else
            menuExit
         fi;;


      *) sufix="${sufix}${Answer}" 
         current="menu${sufix}"
         eval ${current} 2>/dev/null
         if [ $? -ne 0 ]
         then
            menuExit   
         fi;;
   esac
done
}


###################################################
#                     MAIN                        #
###################################################


Answer=""
oldstty=$(stty -g)
clear
current=menu
sufix=""
menu


exit 0

Regards.