在继续之前,我试图编写一个bash脚本,以检查特定的MySQL用户是否拥有适当的特权。
如果我直接从mysql执行命令,我会得到以下信息:
$ mysql -u db_user -pmypassword
mysql> show grants;
+------------------------------------------------------------------------------------------------------------------------------+
| Grants for db_user@localhost |
+------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'db_user'@'localhost' IDENTIFIED BY PASSWORD 'some-password-here' |这正好给了我我想要的东西。
当我把它写进剧本的时候,奇怪的行为就开始起作用了。我编写了这个非常基本的脚本来说明:
passwd=mypassword
user=db_user
line=`mysql -u ${user} -p${passwd} -e "show grants for '${user}'@'localhost';"`
echo $line我得到以下信息:
Grants for db_user@localhost GRANT ALL PRIVILEGES ON blah.tst dropsite.sh mysql.sh runasroot.sh testopts.sh TO 'db_user'@'localhost' IDENTIFIED BY PASSWORD 'some-password-here' 不知何故,本地目录中的文件也被列出了。他们是
blah.tst <----- This test file was added when I discovered the behavior
dropsite.sh
mysql.sh
runasroot.sh
testopts.sh我似乎搞不懂为什么会出现这些。有人有什么想法吗?
发布于 2015-09-12 15:32:58
引用你的变量:
echo "$line"当您不引用变量时,值中的通配符将被展开,因此结果中的*.*将被替换为与该模式匹配的所有文件。
https://stackoverflow.com/questions/32540536
复制相似问题