【发布时间】:2014-01-14 22:44:31
【问题描述】:
我有以下命令从 mysql 获取权限列表
# mysql -u root -p -B -N -e"SHOW GRANTS FOR 'root'@localhost"
我想用 Vuser 变量替换“root”,用 VHost 变量替换 localhost,我无法判断双引号在哪里结束以及如何放置 $Vuser 和 $Vhost。
请有人指导...!
谢谢
【问题讨论】:
我有以下命令从 mysql 获取权限列表
# mysql -u root -p -B -N -e"SHOW GRANTS FOR 'root'@localhost"
我想用 Vuser 变量替换“root”,用 VHost 变量替换 localhost,我无法判断双引号在哪里结束以及如何放置 $Vuser 和 $Vhost。
请有人指导...!
谢谢
【问题讨论】:
mysql -u root -p -B -N -e"SHOW GRANTS FOR '$Vuser'@'$Vhost'"
应该可以。 $XXX 变量通过双引号被 shell 扩展。单引号不会受到伤害,因为在双引号中,它们失去了特殊含义。
【讨论】:
最简单的解决方案似乎是这样。没有单引号。双引号将 -e 之后的所有内容保留为单个参数,并且它们还允许变量扩展:
mysql -u root -p -B -N -e "SHOW GRANTS FOR $Vuser@$Vhost"
正如@Guntram 所指出的,根据 MySQL 规范,$Vuser 周围的单引号是必需的。但如果没有这些,它似乎也可以工作,至少在 MySQL 5.5.31 中是这样。
【讨论】: