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

Jor*_*Lev 2 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
Run Code Online (Sandbox Code Playgroud)

给我带来麻烦的是"cmdRes = ...".如果我只是硬编码一个表名,它可以正常工作,如下所示:

cmdRes=$($mysqlCmd -e 'SHOW DATABASES LIKE "some_database_name"')
Run Code Online (Sandbox Code Playgroud)

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

感谢您的任何帮助,您可以提供.

pau*_*sm4 5

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

一种可能的方案:

cmdRes=$($mysqlCmd -e "SHOW DATABASES LIKE '$testDBName'")
Run Code Online (Sandbox Code Playgroud)