我正在写一个bash脚本来对我的debian squeeze Server上的数据库做一些操作.
我注意到如果我为root输入了一个错误的密码,提示将被关闭,我不会被要求再试一次......这不是很方便!
所以我试图创建一个循环,尝试连接到MYSQL并保存密码,以便以后成功.
我试过这个,但它不起作用.相反,我收到此错误:
ERROR 1045(28000):用户'root'@'localhost'拒绝访问(使用密码:YES)
read -s -p "Enter MYSQL root password: " mysqlRootPassword
while [[ -n `mysql -u root -p$mysqlRootPassword` ]]; do
read -p "Can't connect, please retry: " mysqlRootPassword
done
Run Code Online (Sandbox Code Playgroud)
我在bash脚本方面不是很有经验,任何帮助都会很棒!
she*_*ter 16
我不认为你需要[[ -n backtic ... ]];像这样嵌套的测试.尝试:
read -s -p "Enter MYSQL root password: " mysqlRootPassword
while ! mysql -u root -p$mysqlRootPassword -e ";" ; do
read -s -p "Can't connect, please retry: " mysqlRootPassword
done
Run Code Online (Sandbox Code Playgroud)
while评估任何命令组直到结束; do并检查执行的最后一个命令的返回代码,以确定是否应该执行循环.因为您正在寻找失败,您必须在测试之前使用逻辑NOT(!)或者您可以使用语法等效,即
until mysql -u root -p$mysqlRootPassword -e ";" ; do
read -s -p "Can't connect, please retry: " mysqlRootPassword
done
Run Code Online (Sandbox Code Playgroud)
您可以将其视为'直到mysql正常工作,继续尝试获取正确的密码'.
不幸的是,我无法访问mysql安装,所以这是未经测试的.
我希望这有帮助.
| 归档时间: |
|
| 查看次数: |
16890 次 |
| 最近记录: |