我写了一个包含各种用户查询和条件的脚本。首先,我希望询问用户是否应显示变更日志。然后,询问用户是否应该进行更新。但这是问题所在,在第一个条件和更改日志的显示之后,仅跳过下一个查询。为什么会这样?
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
答案 0 :(得分:4)
您可能正在输入字母y
并按Enter
键,而在您键入y
后,脚本便会继续运行,因为您已将-n 1
添加到read
命令。
尝试键入y
而不按Enter
键,或者如果希望按-n 1
键则删除Enter
。