意外的EOF错误

脚本为您的名字

#!/bin/bash echo "what is your name?" read name if test "$name" = "Daryl" then echo "Hey, how are you?" else echo "sorry, im looking for Daryl" fi 

脚本为yourGrade

  #!/bin/bash ./yourname if[ 0 -eq "$?" ] then exit 0 else echo "what is your grade?" read grade if [ "$grade" -gt 90 ] then echo "Awesome! You got an A" elif [ "$grade -le 90 ] && [ "$grade" -gt 80 ] then echo "Good! You got a B" elif [ "$grade" -lt 80 ]; then echo "You need to work harder!" fi 

我试图得到它,所以在脚本yourGrade它需要你的名字检查,它是Daryl,如果不是停止程序。 然后如果是要求等级,则读取等级值并按照等级返回相应的消息。

每当我运行它,我得到…

  root@kali:~# . yourGrade What is your name? >Daryl Hey how are you! -bash : yourGrade: line 17: syntax error near unexpected token 'elif' -bash : yourGrade: line 17:' elif [ "$grade" -le 90 ] && [ "$grade" -gt 80 ]' 

任何帮助,将不胜感激!

你有几个问题。

出现“意外的EOF”问题是因为您有一个无法匹敌的双引号:

 elif [ "$grade -le 90 ] && [ "$grade" -gt 80 ] 

你需要:

 elif [ "$grade" -le 90 ] && [ "$grade" -gt 80 ] 

一旦你修好了,你有一个问题:

 if[ 0 -eq "$?" ] 

[是一个命令,只有当它是一个单词时才被认为是一个命令。 你需要在if[之间有一个空格。

 if [ 0 -eq "$?" ] 

那么你会遇到一个问题,因为你的错误缩进,事实上你有两个if语句(一个嵌套在另一个里面),只有一个fi ; 在你身上!

最后注意到那些正好80分的人不会被告知关于他们分级的事情。

 #!/bin/bash ./yourname if [ 0 -eq "$?" ] then exit 0 else echo "what is your grade?" read grade if [ "$grade" -gt 90 ] then echo "Awesome! You got an A" elif [ "$grade" -le 90 ] && [ "$grade" -gt 80 ] then echo "Good! You got a B" elif [ "$grade" -lt 80 ]; then echo "You need to work harder!" else echo "You scored 80; that's only barely acceptable" fi fi