Linux shell脚本逻辑错误

时间:2013-12-27 10:29:47

标签: linux unix rhel

我有以下命令从mysql获取privillages列表

# mysql -u root -p -B -N -e"SHOW GRANTS FOR 'root'@localhost"

我想用Vuser变量替换'root',用VHost变量替换localhost,我无法判断双引号的结束位置以及如何放置$ Vuser和$ Vhost。

请有人指导......!

由于

2 个答案:

答案 0 :(得分:2)

mysql -u root -p -B -N -e"SHOW GRANTS FOR '$Vuser'@'$Vhost'"

应该有效。 $ XXX变量由shell用双引号扩展。单引号不会受到伤害,因为在双引号内,它们会失去特殊意义。

答案 1 :(得分:2)

最简单的解决方案似乎是这样。没有单引号。双引号将所有内容保留在一个参数之后,它们也允许变量扩展:

mysql -u root -p -B -N -e "SHOW GRANTS FOR $Vuser@$Vhost"

正如@Guntram指出的那样,根据MySQL规范,$Vuser周围的单引号是必要的。但它似乎没有那些,至少在MySQL 5.5.31。