#!/bin/sh
dblist=mail ftp www
for arg in $dblist; do
mysqldump -u dumper --password=$dbpass --socket $socket --database $dblist >> /tmp/backup/$dblist.sql
done
每個來自變量dblist的數據庫都應寫入一個新的mysqldump行並將數據庫名稱添加到相應的字段中,如何實現這一點?爲變量中的每個參數重複命令
#!/bin/sh
dblist=mail ftp www
for arg in $dblist; do
mysqldump -u dumper --password=$dbpass --socket $socket --database $dblist >> /tmp/backup/$dblist.sql
done
每個來自變量dblist的數據庫都應寫入一個新的mysqldump行並將數據庫名稱添加到相應的字段中,如何實現這一點?爲變量中的每個參數重複命令
爲什麼不聲明dblist
作爲數組?
dblist=(mail ftp www)
for arg in ${dblist}; do
mysqldump .... $arg
並在您的調用中使用$arg
變量。
使用可變arg
(即你的數據庫名稱)來創建一個單獨的SQL轉儲文件對於這樣每個數據庫:
#!/bin/sh
declare -a dblist=(mail ftp www)
for arg in "${dblist[@]}"
do
mysqldump -u dumper --password=$dbpass --socket $socket --database $arg >> /tmp/backup/$arg.sql
done
擴展數組變量的首選方法是'「$ {dblist [@]}」'(不要忘記雙精度型引號!) - 這保留了數組元素中的空格,避免了glob擴展等。 –
@GordonDavisson謝謝我編輯了答案。 – anubhava
dblist=(mail ftp)
for arg in ${dblist[*]}
do
mysqldump -u $dbuser --password=$dbpass --socket $socket --database $arg >> /tmp/backup/$arg.sql
done
的作品,謝謝!
上面所缺少的是引用多字值:'dblist =「mail ftp www」' - 不帶引號的'$ dblist'將允許for循環遍歷3個單詞。另外,修復在mysqldump命令中使用'$ dblist'而不是'$ arg'的錯誤 –