我正在尝试编写一个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
我似乎无法弄清楚为什么会出现这些问题。有没有人有任何想法?
答案 0 :(得分:1)
引用你的变量:
echo "$line"
如果不引用变量,则会扩展值中的通配符,因此结果中的*.*
将替换为与该模式匹配的所有文件。