while do done语句语法错误

#!/bin/bash
#成绩判断
read score
while [ $score -ne -1 ]
 do
  if [ $score -it 0 -o $score -qt 100 ]
 then
  if [ $score -eq 250 ]
  then echo "ni ge gua song"
else
  echo "你输入的成绩有误,请重新输入:"
  fi
if [ $score -ge 90 ]
 then echo "你的成绩优秀"
  elif [ $score -ge 80 ]
   then echo "你的成绩良好"
  elif [ $score -ge 70 ]
   then echo "你的成绩中等"
  elif [ $score -ge 60 ]
   then echo "你的成绩及格"
   else echo "你的成绩不合格"
fi
 echo "请再次输入你的成绩(-1退出):"
 read score
 done
 echo"=======================END======================" 

以上是源代码

score:行26: 未预期的符号 `done' 附近有语法错误
score:行26: ` done '

上面两行是错误

有个if没有fi结束。if [ $score -eq 250 ] 是不是应该是  elif [ $score -eq 250 ] 呀?