2013-03-28 136 views
0

爲啓動器和測試命令執行自動數據庫備份。我發現對通過BASH CLI一個文本文件中的每一行執行一個動作是值得的效果:我創建的數據庫名稱的列表在文件的每一行上運行MySQLdump;未找到命令

# while read line ; do COMMAND $line ; done 

文件:

# mysql -uroot -e "show databases" > databases 

然後對該文件進行了以下嘗試,看看它是否能正常工作。

# while read line ; do "mysqldump -uroot $line > /dbbackups/$line.sql" ; done 

表面上看,這將是正常工作,但我遇到了以下錯誤(S):

[04:58:46] [[email protected] database-backup-testing]# cat databases | while read line ; do "mysqldump -uroot $line > $line.sql" ; done 
-bash: mysqldump -uroot Database > Database.sql: command not found 
-bash: mysqldump -uroot information_schema > information_schema.sql: command not found 
-bash: mysqldump -uroot cphulkd > cphulkd.sql: command not found 

我不知道爲什麼它是給找不到命令,當明顯,輸出這些命令似乎是正確的。我也嘗試使用mysqldump(/ usr/bin/mysqldump)的絕對路徑,但它給出了相同的錯誤(s)。

任何人都可以填寫我爲什麼發生這種情況?

======================

編輯:固定


如果報價被刪除該腳本; IE:

# cat databases | while read line ; do mysqldump -uroot $line > $line.sql ; done 

具有引號顯然是將它作爲字符串執行而不是命令。

+0

在bash中嘗試「哪個mysqldump」。 「ls + chmod」確保「您可以執行mysqldump」 – neohope 2013-03-28 10:13:10

+0

您需要指定mysqldump的路徑。但爲什麼不使用它的['--all-databases'](http://dev.mysql.com/doc/en/mysqldump.html#option_mysqldump_all-databases)選項? – eggyal 2013-03-28 10:13:39

+0

使用絕對路徑,我已經說上面我已經試過了,返回如下: ---- -bash:在/ usr/bin中/ mysqldump的-uroot數據庫> Database.sql:沒有這樣的文件或目錄 – 2013-03-28 10:20:12

回答

0

不要打破你的頭來做到這一點,我寫了一個bash腳本,這將幫助你實現實際上正在嘗試做的事情。沒有找到 https://github.com/jeevandongre/backup-restore

+0

Hey Jeeven,謝謝你,儘管我爲寫自己的腳本感到自豪(幫助我學習更好!)。 – 2013-03-28 10:23:18

+0

@DavidBiers繼續前進!這就是甚至學到了。所有最好的! – 2013-03-28 10:27:57

0

爲什麼它給命令

你的報價是不正確的,嘗試是這樣的:

while read line ; do mysqldump -uroot "$line" > "$line".sql ; done 

沒有使用mysqldump,所以我不能與幫助特定命令的語法。

相關問題