我正在写一个bash脚本来对我的debian squeeze Server上的数据库做一些操作.
我注意到如果我为root输入了一个错误的密码,提示将被关闭,我不会被要求再试一次……这不是很方便!
所以我试图创建一个循环,尝试连接到MysqL并保存密码,以便以后成功.
我尝试过这个,但它不起作用.
相反,我收到此错误:
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: 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
我在bash脚本方面不是很有经验,任何帮助都会很棒!
我认为你不需要[[-n backtic …]];测试嵌套就好了.尝试:
原文链接:https://www.f2er.com/bash/385049.htmlread -s -p "Enter MysqL root password: " MysqLRootPassword while ! MysqL -u root -p$MysqLRootPassword -e ";" ; do read -p "Can't connect,please retry: " MysqLRootPassword done
同时评估任何命令组直至结束;执行并检查执行的最后一个命令的返回代码,以确定是否应该执行循环.因为您正在寻找失败,您必须在测试之前使用逻辑NOT(!)或者您可以使用语法等效,即
until MysqL -u root -p$MysqLRootPassword -e ";" ; do read -p "Can't connect,please retry: " MysqLRootPassword done
您可以将其视为’直到MysqL正常工作,继续尝试获取正确的密码’.
不幸的是,我无法访问MysqL安装,所以这是未经测试的.
我希望这有帮助.