捕获错误密码

捕获错误密码

我编写了一个脚本来处理在我们的服务器上设置网站的所有步骤。我遇到的问题是,如果有人输入了错误的 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

还,使用更多报价™

相关内容