我很难确定如何将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等等 - 但没有任何效果。
感谢您提供的任何帮助。
答案 0 :(得分:5)
问题是shell不会扩展单引号(')中的任何内容。
一种可能的解决方案:
cmdRes=$($mysqlCmd -e "SHOW DATABASES LIKE '$testDBName'")