我很难确定如何将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等 - 但没有任何工作.
感谢您的任何帮助,您可以提供.
问题是shell不会扩展单引号(')内的任何内容.
一种可能的方案:
cmdRes=$($mysqlCmd -e "SHOW DATABASES LIKE '$testDBName'")
Run Code Online (Sandbox Code Playgroud)