mysql - 将mysql命令行查询的结果放入bash脚本变量中

标签 mysql bash

我很难弄清楚如何将 mysql 查询的结果放入 bash shell 脚本变量中。

testDBName="some_database_name"
mysqlUser="root"
mysqlPassword="password"
mysqlCmd="/Applications/MAMP/Library/bin/mysql -u $mysqlUser -p $mysqlPassword -B -N"
cmdRes=$($mysqlCmd -e 'SHOW DATABASES LIKE "$testDBName"') #THIS IS THE TROUBLESOME LINE
if [ "$cmdRes" = "" ]; then
    echo "Table does not exist"
else
    echo "Table already exists"
fi

给我带来麻烦的行是“cmdRes=...”。如果我只是将表名称硬编码到其中,它就可以正常工作,如下所示:

cmdRes=$($mysqlCmd -e 'SHOW DATABASES LIKE "some_database_name"')

但是当我在那个东西里面有一个 $variable 时,我无法理解如何/为什么/发生了什么。基于许多其他类似但不同的问题的答案,我尝试将字符串的不同部分放入不同的变量中以减少引用,我尝试过单引号,双引号,反斜杠,双单引号双引号、大括号、运行 eval 等——但没有任何效果。

感谢您提供的任何帮助。

最佳答案

问题是 shell 不会展开单引号 (') 内的任何内容。

一种可能的解决方案:

cmdRes=$($mysqlCmd -e "SHOW DATABASES LIKE '$testDBName'")

关于mysql - 将mysql命令行查询的结果放入bash脚本变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7301780/

相关文章:

php - Zend Framework 1 更新操作

mysql - MURA——入门

mysql - LIKE 运算符问题 'maha,delhi'

bash - 如何区分 bashrc 文件中的 ssh session 或 vnc session 或控制台 session

linux - 重命名文件夹中的部分多个文件

php - 反引号 MySQL 实体

Bash 将存储的 "boolean"值与什么进行比较?

linux - Bash 从文本文件输入数据并处理它

bash - 为什么 `system` 不会创建并返回一个变量?

php - 为什么php没有返回结果,而mysql有?