去年的项目用shell写了一个管理mysql数据库的小工具,里面涉及到一个问题,就是判断mysql数据库密码是否正确,

当时还是小小的困扰了一下,后来查资料,自己又改了改,才勉强符合要求。

现在想来,其实是个很简单的东西。

凡事都是熟能生巧啊。


#!/bin/bash  
  
DB_PASSWORD=""  
DB_PASSWORD_LEN=""  
SQL_RESULT=""  
SQL_RESULT_LEN=""  

#use a function to get or set the DB_PASSWORD  

# .........  


DB_PASSWORD_LEN=${#DB_PASSWORD}  
#根据长度判断密码是否为空,采用不同的语句处理  

if [[ ${DB_PASSWORD_LEN} -eq 0 ]];then  
    SQL_RESULT=${mysql -u ${DB_USER} -e quit 2>&1}  
else  
    SQL_RESULT=${mysql -u ${DB_USER} -p${DB_PASSWORD} -e quit 2>&1}  
fi  
#这里的-p和{DB_PASSWORD}必须挨着,不然会提示你输密码的  


#密码正确的话,SQL_RESULT_LEN为0  

SQL_RESULT_LEN=${#SQL_RESULT}  

if[[ ${SQL_RESULT_LEN} -eq 0 ]];then
  echo "Right Password !"  
else  
  echo "Wrong Password !"  
fi  


上文中的 2>&1是个比较奇特的用法,实际上,

0,1,2分别代表了stdin,stdout,stderr

2>&1实际上就是将错误结果重定向到标准输出上,上文中最后是用SQL_RESULT这个变量来捕获结果的


Logo

更多推荐