2012-12-27 345 views
0

我試圖執行一個命令,但命令太長了,而且太長時間只能從命令行運行。所以我試圖把它放在一個shell腳本中,然後我可以運行shell腳本,它將執行非常長的unix命令。在shell腳本中執行linux命令

顯然我需要標題,然後是命令。什麼語法,所以我需要添加,所以這個shell腳本將工作?

#!/bin/sh 
./mysqldump --defaults-file=../../conf/mysql.conf --single-transaction \ 
    --ignore-table=st.Event --ignore-table=st.TransferStatus \ 
    --ignore-table=st.TransferConfiguration --ignore-table=st.TransferData \ 
    --ignore-table=st.logging_event --ignore-table=st.logging_event_exception \ 
    --ignore-table=st.logging_event_property \ 
    -u root -pXXXXXXXX st > /tmp/database_backup.sql 
+3

有什麼問題你就在那裏呢?它工作嗎? –

+1

(反斜槓不會改變你的腳本,把它全部放在一行上。) – Mat

+0

這個腳本和'./ mysqldump'在同一個目錄嗎?你打電話過得怎麼樣?你打電話時會發生什麼? – Johnsyweb

回答

0

我不認爲你需要的./,也可以爲這個命令(http://linuxreviews.org/quicktips/alias/)創建一個別名。一旦準備好命令,請不要忘記chmod +x.sh文件。

你可能想看看這個樣本這裏: http://bash.cyberciti.biz/backup/backup-mysql-database-server-2/

MYSQLDUMP="$(which mysqldump)" 
$MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db 
0

至於語法去,你的shell腳本似乎罰款給我...

我會小心about是腳本中的所有相對路徑,更具體地說是./mysqldump../../conf/mysql.conf。使用相對路徑要求從文件系統中的特定目錄執行腳本總是。使用絕對路徑使腳本更安全,但它將它綁定到特定位置。

如果您堅持使用相對路徑,您可以將腳本放在它應該運行的目錄中,然後使用絕對路徑調用

要運行腳本,您應該使用chmod +x(或其一些變體)使其文件可執行,或將其作爲參數傳遞給sh例如。 sh /path/to/my/script.sh

我們也許能夠幫助更多的,如果你提到的與您當前的腳本確切的問題是什麼...