I think you just need a read statement at the end of the loop - otherwise the screen is cleared and the output the user has selected is therefore lost.
esac
read -p "press any key to continue "
done
This is only a suggestion: you could store the response in a variable and use that to exit the loop.
read -p "press x to quit - any other key to contine " answer
if [ "$answer = "x" ];then
break
fi