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

时间:2011-09-04 20:00:33

标签: 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"')

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

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:5)

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

一种可能的解决方案:

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