我在 bash (Ubuntu) 中写了一个 MySQL 命令:
[XXXX:~]$ mysql -h localhost -u XXXX -pXXXX -e "DROP DATABASE IF EXISTS `f-XXXX`;"
我在这个命令中需要反引号,因为数据库名称是可变的。
该命令不起作用,它发送f-XXXX command not found
我认为我的问题与反引号有关。我能怎么做?
您无需在此处使用反引号进行变量替换。
[XXXX:~]$ mysql -h localhost -u XXXX -pXXXX -e "DROP DATABASE IF EXISTS ${DB};""
Bash 获取反引号的内容并使用它作为命令运行另一个 bash 进程。
这是一个反引号。反引号不是引号,它具有非常特殊的含义。您在反引号之间键入的所有内容都由 shell 在主命令之前评估(执行)(如示例中的 chown),并且该命令使用该执行的输出,就像您在该位置键入该输出一样命令行。
改用 $(commands)。
mysql -h localhost -u XXXX -pXXXX -e "DROP DATABASE IF EXISTS $('f-XXXX');"