寻找匹配的“”时出现意外的 EOF ubuntu 20.04

寻找匹配的“”时出现意外的 EOF ubuntu 20.04

有人可以帮助我吗?我不知道问题出在哪里?

./menu.sh:第 268 行:查找匹配的“”时出现意外的 EOF
./menu.sh:第 271 行:语法错误:意外的文件结尾

 submenuFTP () {
      local PS3='Please enter option: '
      local options=( "Install vsftp" "create ftp user" "Return to menu")
      local opt
      select opt in "${options[@]}"
      do
          case $opt in
              "Install vsftp")
                 ./vsftp/vsftp_install.sh
                  ;;
              "Create ftp user")
                  ./vsftp/create_ftp.sh
                  ;;           
              "Return to menu")
                  return
              ;;
          *) echo "invalid option $REPLY";;
      esac
  done
}

submenuDatabase () {
 local PS3='Please enter option: '
  local options=("MySQL" "MariaDB" "MongoDB" "Postgres" "Return to menu")
  local opt
  select opt in "${options[@]}"
  do
      case $opt in
          "Install MySQL ")
             ./Database/mysql.sh
              ;;
          "Install MariaDB")
              ./Database/mariadb.sh
              ;;
           "Install MongoDB")
              ./Database/mongodb.sh
              ;;
        "Install Postgres")
              ./Database/postgres.sh
              ;;
          "Return to menu")
              return
              ;;
          *) echo "invalid option $REPLY";;
      esac
  done
}

submenuEmail () {
 local PS3='Please enter option: '
  local options=("Install postfix" "Install anti-spam" "Install anti-virus" "Add domaine" "Add user mail" "Return to menu")
  local opt
  select opt in "${options[@]}"
  do
      case $opt in
          "Install postfix")
             ./mail/postfix_install.sh
              ;;
          "Install anti-spam")
              ./mail/spamassassin_install.sh
              ;;
           "Install anti-virus")
              ./mail/clamAV_install.sh
              ;;
        "Add domaine")
              ./mail/add_domain.sh
              ;;
         "Add user mail")
              ./mail/add_user.sh
              ;;
          "Return to menu")
              return
              ;;
          *) echo "invalid option $REPLY";;
      esac
  done
}
submenuawstats () {
 local PS3='Please enter option: '
  local options=("Install awstats"  "Add domain awstats" "Return to menu")
  local opt
  select opt in "${options[@]}"
  do
      case $opt in
          "Install awstats")
            ./Monitoring/awstats_install.sh
              ;;
           "Add domain awstats")
              ./Monitoring/awstats_add_domaine.sh
              ;;
          "Return to menu")
              return
              ;;
          *) echo "invalid option $REPLY";;
      esac
  done
}
 submenuprestashop () {
 local PS3='Please enter option: '
  local options=("Install prestashop"  "Add domain prestashop" Return to menu")
  local opt
  select opt in "${options[@]}"
  do
      case $opt in
          "Install prestashop")
            ./Monitoring/prestashop_install.sh
              ;;
           "Add domain prestashop")
              ./Monitoring/prestashop_add_domaine.sh
              ;;
          "Return to menu")
              return
              ;;
          *) echo "invalid option $REPLY";;
      esac
  done
}

submenuMonitoring () {
 local PS3='Please enter option: '
  local options=(  "Use awstats"  "Use prestashop" "Return to menu")
  local opt
  select opt in "${options[@]}"
  do
      case $opt in
          "Use awstats")
             submenuawstats
              ;;
           "Use prestashop")
              submenuprestashop
              ;;
          "Return to menu")
              return
              ;;
          *) echo "invalid option $REPLY";;
      esac
  done
}
submenuSecurity () {
local PS3='Please enter option: '
  local options=("Install certbot" "Secure web page" "Secure mail" "Return to menu")
  local opt
  select opt in "${options[@]}"
  do
      case $opt in
          "Install certbot")
              ./certbot/certbot_install.sh
              ;;
           "Secure web page")
              ./certbot/certbot_web.sh
              ;;
            "Secure mail")
               ./certbot/certbot_mail.sh
              ;;       
            "Secure FTP")
               ./certbot/certbot_FTP.sh
              ;;       
               "Return to menu")
              return
              ;;
          *) echo "invalid option $REPLY";;
      esac
  done
}

submenuwebserver () {
  local PS3='Please enter option: '
  local options=("Install Nginx" "Create web page" "Return to menu")
  local opt
  select opt in "${options[@]}"
  do
      case $opt in
            "Install Nginx ")
              ./serverWeb/nginx_install.sh
              ;;      
             "Create web page")
              ./serverWeb/nginx_add_page.sh
              ;;                  
          "Return to menu")
              return
              ;;
          *) echo "invalid option $REPLY";;
      esac
  done
}
submenuDNS () {
  local PS3='Please enter option: '
  local options=("Install PowerDNS" "Add domaine" "Return to menu")
  local opt
  select opt in "${options[@]}"
  do
      case $opt in
             "Install PowerDNS")
             ./DNS/power_install.sh
              ;;           
             "Add domaine")
              echo "you chose sub item 1"
              ;;                  
          "Return to menu")
              return
              ;;
          *) echo "invalid option $REPLY";;
      esac
  done
}
submenuCron () {
  local PS3='Please enter option: '
  local options=("Install Cron" "Add domaine" "Return to menu")
  local opt
  select opt in "${options[@]}"
  do
      case $opt in
             "Install Cron")
              ./cron/install_cron.sh
              ;;           
             "Add cron job for database")
              ./cron/cron_database.sh
              ;;
         "Add cron job for nginx")
              ./cron/cron_nginx.sh
              ;;
             "Add cron job for awstats")
              ./cron/cron_awstats.sh
              ;;
             "Add cron job for certbot")
              ./cron/cron_certbot.sh
              ;;
          "Return to menu")
              return
              ;;
          *) echo "invalid option $REPLY";;
      esac
  done
}
# main menu
local PS3='Please enter option: '
options=("File manager" "Databases" "Email" "Monitoring" "Security" "Web server" "Web server" "Cron job" "DNS server" "Main menu quit")
select opt in "${options[@]}"
do
    case $opt in
        "File manager")
             submenuFTP
            ;; 
        "Databases")
            submenuDatabase
            ;;
    "Email")
            submenuEmail
            ;;
    "Monitoring")
              submenuMonitoring
            ;;
    "Security")
            submenuSecurity
            ;;
    "Web server")
            submenuwebserver
            ;;
    "DNS server")
            submenuDNS
            ;;
    "Cron job")
            submenuCron
            ;;  
        "Main menu quit")
            exit
            ;;
        *) echo "invalid option $REPLY";;
    esac

完成第 268 行和第 171 行后:

268         *) echo "invalid option $REPLY";;
269     esac
270 done
271

答案1

./menu.sh:第 268 行:查找匹配的“”时出现意外的 EOF

local options=("Install prestashop" "Add domain prestashop" Return to menu")

"之前缺少一个引文Return

注意你可以使用ShellCheck – shell脚本分析工具检查 bash 脚本中的错误。

相关内容