2011-09-04 117 views
2

我有一個非常困難的時間,弄清楚如何將mysql查詢的結果導入bash shell腳本變量。將mysql命令行查詢的結果放入bash腳本變量中

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等 - 但沒有任何工作。

感謝您提供的任何幫助。

回答

5

問題是shell不會在單引號(')內部擴展任何東西。

一個可能的解決方案:

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

不,我得到:ERROR位於第1行:未知的命令 '\'」。 –

+1

等一下,我只是嘗試沒有反斜槓,它的工作原理!如果你編輯你的答案,我會標記它是正確的(我沒有編輯特權)。謝謝! –