【问题标题】:Unix : Can't use backquote in MySQL commandUnix:不能在 MySQL 命令中使用反引号
【发布时间】:2013-02-26 08:45:26
【问题描述】:

我在 bash (Ubuntu) 中编写了一个 MySQL 命令:

[XXXX:~]$ mysql -h localhost -u XXXX -pXXXX -e "DROP DATABASE IF EXISTS `f-XXXX`;"

我需要在这个命令中使用反引号,因为数据库名称是可变的。

该命令不起作用并发送f-XXXX command not found 我认为我的问题与反引号有关。我该怎么办?

【问题讨论】:

  • 您确定mysql some_params -e "DROP DATABASE IF EXISTS ${DB_NAME}" 不适合您吗?
  • 在 UNIX 中,反引号 ` 用于命令替换。

标签: mysql unix ubuntu


【解决方案1】:

您无需在此处使用反引号进行变量替换。

[XXXX:~]$ mysql -h localhost -u XXXX -pXXXX -e "DROP DATABASE IF EXISTS ${DB};""

【讨论】:

  • 简单引号也可以:我可以在简单引号内使用反引号
【解决方案2】:

Bash 获取反引号的内容并使用它作为命令运行另一个 bash 进程。

这是一个反引号。 Backtick 不是引号,它有很特殊的含义。您在反引号之间键入的所有内容都由 shell 在主命令之前评估(执行)(如示例中的 chown),并且该命令使用该执行的输出,就像您在该位置键入该输出一样命令行。

改用 $(commands)。

mysql -h localhost -u XXXX -pXXXX -e "DROP DATABASE IF EXISTS $('f-XXXX');"

【讨论】:

猜你喜欢
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-29
  • 2013-07-20
  • 1970-01-01
  • 2019-10-29
  • 2014-11-22
相关资源
最近更新 更多