2013-03-06 102 views
0

我遇到了shell腳本問題。由於語法錯誤,grant命令在shell腳本中不起作用

由於某種原因,我已經在雙引號(")之前使用了\字符,如我的shell腳本的以下行中所示。

SQL2 = \ 「在\ $ {} DB_NAME授予所有*爲\ $ {} DB_USER @ \ $ {}主機通過\ $ {} DBPASS鑑定; \」;

但隨着MySQL的「批」命令語法,我需要把雙引號之前和之後\${dbpass},這是shell腳本行我給above.When我把這樣的,\"\${dbpass}\"的一部分,在執行期間拋出語法錯誤。我需要解決這個問題。

這是一個更新。
這是我想要運行的shell腳本。

的ssh -t [email protected]
蘇根-c 」
回聲\「 給數據庫名稱:\ 」;
讀DB_NAME;
回聲\「 給密碼:\」;
讀DB_PASS;
主機=本地主機;
SQL1 = \ 「創建數據庫\ $ DB_NAME; \」。
SQL2 = \「授予所有在\ $ {DB_NAME} *爲\ $ {DB_NAME} @ \ $ {host}由\「\ $ {db_pass} \」; \「標識;
sql3 = \「\ $ {sql1} \ $ {sql2} \」;
echo \「============== \」;
mysql -u root -p -e \「\ $ {sql3} \」;


請參考此腳本,並請讓我知道我需要這個做必要的修改

感謝

+0

你提到'$ db_name'等變量,它們是來自shellscript的嗎?其次,它真的需要雙引號?是否支持單引號?什麼是語法錯誤,腳本?你如何將這個傳遞給_something_和_something_? – Jite 2013-03-06 12:02:39

+0

sql2是一個bash變量? – 2013-03-06 12:38:30

+0

@DavideBerra:我不知道你是誰,但我看不到任何具體的東西,使它成爲_bash_變量。而是一個shell變量:) – Jite 2013-03-06 13:24:26

回答

0

試試這個

db_name="yourdbname" 
db_user="yourdbuser" 
host="yourhost" 
dbpass="yourdbpass" 

sql2="grant all on ${db_name}.* to ${db_user}@${host} identified by ${dbpass};" 

echo $sql2 | mysql -u yourusername -pmysql 
+0

感謝您的重播davide.But請看看我更新的問題。 – user103134 2013-03-06 16:17:39