我编写了一个脚本来处理在我们的服务器上设置网站的所有步骤。我遇到的问题是,如果有人输入了错误的 MySQL 密码,脚本会继续运行,只是跳过创建数据库。如果密码不正确,我希望它停止,并再次要求输入。
我该如何处理这个问题?
这是我的代码 -
read -s -p "Enter the MySQL password: " BASEPASS
mysql -u ${BASEUSER} -p${BASEPASS} <<CREATE_DB_QUERY
CREATE DATABASE IF NOT EXISTS ${NEWDB};
CREATE USER ${NEWUSER} IDENTIFIED BY '${NEWPASS}';
GRANT ALL ON ${NEWDB}.* TO ${NEWUSER};
CREATE_DB_QUERY
mysqldump --opt --user=${BASEUSER} --password=${BASEPASS} ${BASEDB} > ${SQLFILE}
mysql --user=${BASEUSER} --password=${BASEPASS} ${NEWDB} < ${SQLFILE}
rm ${SQLFILE}
答案1
首先,确保您set -o errexit -o nounset
位于脚本的顶部。然后循环进行简单的检查,直到您至少获得一个有效的密码:
while true
do
read -s -p "Enter the MySQL password: " BASEPASS
mysql -u "$BASEUSER" "-p${BASEPASS}" 'SELECT 1' && break
done
还,使用更多报价™!