我很难弄清楚如何将 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/