多个if和读取行被忽略

时间:2019-07-31 06:57:29

标签: bash

我写了一个包含各种用户查询和条件的脚本。首先,我希望询问用户是否应显示变更日志。然后,询问用户是否应该进行更新。但这是问题所在,在第一个条件和更改日志的显示之后,仅跳过下一个查询。为什么会这样?

    if version_gt $serverversion $version; then
      echo -e "\e[34m#########################################################"
      echo -e "\e[34mThere is a new version. Do you want to see the Changelog?"
      echo -e "\e[34m#########################################################"
      read -p "Yes(y)/No(n) " -n 1 -r changelog

      if [[ $changelog =~ ^[Yy]$ ]]
      then
        curl --silent "$changelogurl"
      fi

      echo -e "\e[34m#########################################################"
      echo -e "\e[34mDo you want to update?"
      echo -e "\e[34m#########################################################"
      read -p "Yes(y)/No(n) " -n 1 -r update

      if [[ $update =~ ^[Yy]$ ]]
      then
        echo -e "\e[32m#########################################################"
        echo -e "\e[32mI am updating myself..."
        echo -e "\e[32m#########################################################"
        sleep 4

        curl --silent "$bashlyurl" > bashlyblog.sh
        curl --silent "$templateurl" > template.html  

        echo -e "\e[32m#########################################################"
        echo -e "\e[32mUpdate done. Restart..."
        echo -e "\e[32m#########################################################"
        /bin/bash bashlyblog.sh
        exit 1
      fi
fi

1 个答案:

答案 0 :(得分:4)

您可能正在输入字母y并按Enter键,而在您键入y后,脚本便会继续运行,因为您已将-n 1添加到read命令。 尝试键入y而不按Enter键,或者如果希望按-n 1键则删除Enter