2014-07-25 72 views
1

我需要直接從腳本中刪除一個mysql數據庫。如何使用〜/ .my.cnf從腳本中刪除mysql數據庫?

我創建文件〜/ .my.cnf和chmod 600

[client] user = "**************" password = "*********" safe-updates

我的腳本包含這樣的:

CMD4="echo 'DROP DATABASE db_test;' | mysql"

curl -fs -- "$URL" | grep -q -- "$WORD1" && $CMD4

我不能執行命令我只是得到這個輸出: 'DROP DATABASE db_測試;' | mysql

數據庫不會丟失。 它有什麼問題?

感謝

+0

我已經重新假設你正在討論bash。如果我錯了,隨時糾正它。我遠遠不是一個忍者忍者,但我懷疑你的管道作爲參數通過。 –

回答

0

我想你應該在重音符號(``),而不是雙引號(「」),你在哪裏初始化的CMD4在兩個

echo 'DROP DATABASE db_test;' | mysql

值附上以下聲明
0

請不要用變量來存儲代碼。使用功能來代替:

function dropdb { 
    echo 'DROP DATABASE db_test;' | mysql # aren't you missing some arguments here? 
              # like `-u username -p db` 
} 

curl -fs -- "$URL" | grep -q -- "$WORD1" && dropdb 
+0

你的函數定義中沒有'()',可以獲得稍好的可移植性。他們用'sh'工作,但他們更多是一種抨擊。我一直使用它們直到有人指出。 –

+0

@ DavidC.Rankin謝謝你指出,輪到你了!固定。 –

0

可以消除使用mysql -Bse 'expression'管道。所以在你的情況下,使用正確的〜/ .my.cnf設置你可以簡單地做:

mysql -Bse "drop database db_test" 

你也有全部的mysql選項。即mysql -h somehost -u someuser -p pass -Bse "expression"

+0

'-Bse'中的'B'是什麼?我在manpage中看不到它。 – dotancohen

+0

** - B, - 批處理**請勿使用歷史記錄文件。禁用交互式行爲。 –

+0

謝謝大衛! – dotancohen