【问题标题】:Linux shell script logical errorLinux shell脚本逻辑错误
【发布时间】: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。

请有人指导...!

谢谢

【问题讨论】:

标签: linux unix rhel


【解决方案1】:
mysql -u root -p -B -N -e"SHOW GRANTS FOR '$Vuser'@'$Vhost'"

应该可以。 $XXX 变量通过双引号被 shell 扩展。单引号不会受到伤害,因为在双引号中,它们失去了特殊含义。

【讨论】:

    【解决方案2】:

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

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

    正如@Guntram 所指出的,根据 MySQL 规范,$Vuser 周围的单引号是必需的。但如果没有这些,它似乎也可以工作,至少在 MySQL 5.5.31 中是这样。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-08
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多