2014-07-15 36 views
1

我目前正在使用MAMP專業版,我想創建一個簡單的終端腳本(或類似於PC上的.bat文件),它允許我創建一個sql轉儲(我去哪裏並預配置數據庫名稱),它會自動爲我創建.sql文件。Shell腳本來創建一個新的SQL轉儲

這是我知道的,到目前爲止:

1:腳本應該首先訪問cd /applications/MAMP/library/bin

2:當它在該目錄中,它應該運行以下

./mysqldump -u root -p databaseName > /Applications/MAMP/htdocs/website/db.sql

最後,在該目錄中,當我單擊該腳本時,它不應該替換較舊的文件,而是創建一個新的文件,也許只是在它後面添加日期或整數。

這可能嗎?

道歉,我不知道這樣做的最好方法。

在此先感謝。

回答

2

你可以有這樣的:

#!/bin/sh 
TS=$(exec date '+%s') 
cd /applications/MAMP/library/bin && \ 
    ./mysqldump -u root -p databaseName > "/Applications/MAMP/htdocs/website/db.$TS.sql" 

這將在db.(timestamp).sql形式創建文件。

如果您想要其他形式,只需更改date命令。 '+%s'指定生成的格式,即時間戳。您可以使用date --helpman date查看其他格式。

+0

'$(exec date ...)'而不是'$(date ...)'的優點是什麼? –

+1

只是可選的,以防止額外的分叉。如果沒有'exec',shell會生成'shell-> subshel​​l-> date'的進程樹,而'exec'則會變成'shell-> date'。 – konsolebox

+0

感謝您的解釋!它不是'bash'結構嗎?還是它可以在普通的'sh'上使用? –

1

只是其他答案的變化(投票!)。你不必改變目錄下執行mysqldump

#!/bin/bash 
TS=$(exec date '+%s') 
/applications/MAMP/library/bin/mysqldump -u root -p databaseName \ 
        > "/Applications/MAMP/htdocs/website/db.$TS.sql" 

請當心,你有兩個/Application/application目錄。根據您的FS區分大小寫,這可能是一個錯誤。

1

您使用OSx嗎?

#!/bin/bash 
cd /applications/MAMP/library/bin && mysqldump -u root -p databaseName > /Applications/MAMP/htdocs/website/db.sql 

在此之後,你需要的權限設置爲你的腳本:

chmod +x your_script_file 

現在,你可以調用...

./your_script_file 

sh yout_script_file 

如果你想替換舊文件,這個命令會這樣做是因爲新文件名與舊文件名相同