2013-11-05 125 views
0

我得到7: Syntax error: "(" unexpected錯誤,而在Ubuntu上運行婁代碼,但它在CentOS運行沒有任何問題語法錯誤:「(」意外的shell腳本

#!/bin/sh 
# 
TODATE=`date '+%Y-%b-%d'` 
# 
# Backup Creation for Databases 
# 
databases=(`echo 'show databases;' | mysql -u root -ppaSSword | grep -v ^Database$`) 
for DB in "${databases[@]}"; do 
mysqldump --force --opt --user=root --password=paSSword $DB | gzip > /mnt/Backup/DB/${DB}_${TODATE}.sql.gz 
done 
# 

請幫我解決這個

我想不通的問題。但是,

我使用備份婁代碼。它的正常工作與Ubuntu

#!/bin/bash 
# 
TODATE=`date '+%Y-%b-%d'` 
databases="$(mysql -u root -ppaSSword -Bse 'show databases')" 
for DB in $databases 
do 
mysqldump -u root -psqlMYadmin $DB | gzip > /mnt/Backup/DB/${DB}_${TODATE}.sql.gz 
done 

回答

0

您需要跳過最後的'$'行數據庫= ...

0

腳本中只有一個(,並且您有shebang行#!/bin/sh。我最好的猜測是程序/bin/sh不識別數組賦值,而/bin/bash會。

將您的垃圾改爲#!/bin/bash

你可能會做的更好替代反勾的使用$(...))。另外,作爲Sami Laine指出了他的answer,它會更好,如果你報的正則表達式的grep命令(雖然它不是導致您的問題):

databases=($(echo 'show databases;' | mysql -u root -ppaSSword | grep -v '^Database$')) 
1

您可以將'show databases'輸出重定向到dump.txt文件,如果完成然後嘗試。

#!/bin/bash 
da=$(date +"%d-%m-%y") 
for db in `cat dump.txt` ; do mysqldump --force --opt --user=root --password=paSSword $db | gzip /path/to/backup/$db_"$da".sql.gz ; done 
相關問題