समस्या के अलावा @Cyrus ने बताया, आप साइटों को गलत उपयोग कर रहे हैं। आप वास्तव में दो गलतियाँ कर रहे हैं जो (विडंबना) अधिकतर एक दूसरे को रद्द करती हैं। सबसे पहले, जब आप सरणी को परिभाषित करते हैं sites=("site1.ru site2.ru site3.ru")
उद्धरण प्रत्येक साइट को एक अलग तत्व बनाने के बजाय एक एकल सरणी तत्व बनाते हैं। फिर, जब आप इसे देखें ${sites[*]}
, को [*]
यह सभी तत्वों को एक साथ मिक्स करता है (रिक्त स्थान से अलग) (या यदि एक से अधिक तत्व होते हैं), और फिर इसके आसपास डबल-कोट्स की कमी का मतलब है कि यह रिक्त स्थान पर परिणाम देता है (बजाय सरणी तत्वों के बीच) ), और किसी भी वाइल्डकार्ड आदि का विस्तार करता है।
नेट परिणाम: आपको किसी सरणी का उपयोग करने का कोई लाभ नहीं मिल रहा है, और यदि किसी भी नाम के साथ आपके पास शेल मेटाचैकर्स हैं तो आपके पास ... अनपेक्षित ... व्यवहार होगा। इस मामले में यह परेशानी का कारण होने की संभावना नहीं है (समस्याग्रस्त अक्षर आमतौर पर डीएनएस में वैसे भी मना किए जाते हैं), लेकिन इस अधिकार को करना सीखना बेहतर है:
now="$(date +'%d_%m_%Y')"
path="/var/www/vitalii/backups"
sites=(site1.ru site2.ru site3.ru) # If any elements had spaces or other funny characters, you'd need to quote them INDIVIDUALLY
for i in "${sites[@]}" # Double-quotes and [@] make it treat each element as a "word", even if they contain funny characters
do
echo "$path/$i"
tar -cvzf "$path/${i}_${now}.tgz" "/var/www/vitalii/$i" # ${i}_ keeps it from treating "_" as part of the variable name
done
EDIT: जैसा कि @ G-Man ने एक अन्य टिप्पणी में बताया, जिसमें डबल-कोट्स का उपयोग किया गया है सब चर संदर्भ एक अच्छा विचार है। मैंने यह ऊपर तय किया है ...