मैं लगभग 20 विभिन्न सर्वरों पर rsync और फ़ाइलों को अपडेट करने के लिए एक बैश स्क्रिप्ट लिख रहा हूं।
मेरे पास rsync भाग है। मुझे जिन चीज़ों से परेशानी हो रही है, वे चर की सूची से गुजर रही हैं।
मेरी स्क्रिप्ट इस प्रकार अब तक दिखती है:
#!/bin/bash
SERVER1="192.xxx.xxx.2"
SERVER2="192.xxx.xxx.3"
SERVER3="192.xxx.xxx.4"
SERVER4="192.xxx.xxx.5"
SERVER5="192.xxx.xxx.6"
SERVER6="192.xxx.xxx.7"
for ((i=1; i<7; i++))
do
echo [Server IP Address]
done
[Server IP Address]
संबंधित चर का मूल्य कहां होना चाहिए। इसलिए जब i = 1 मुझे $ SERVER1 के मूल्य की प्रतिध्वनि करनी चाहिए।
मैं सहित कई पुनरावृत्तियों की कोशिश की है
echo "$SERVER$i" # printed the value of i
echo "SERVER$i" # printer "SERVER" plus the value of i ex: SERVER 1 where i = 1
echo $("SERVER$i") # produced an error SERVER1: command not found where i = 1
echo $$SERVER$i # printed a four digit number followed by "SERVER" plus the value of i
echo \$$SERVER$i # printed "$" plus the value of i
मुझे स्क्रिप्ट किए हुए काफी समय हो चुका है इसलिए मुझे पता है कि मुझे कुछ याद आ रहा है। इसके अलावा मुझे यकीन है कि मैं C # का उपयोग करके कर सकता हूं, जिसे मैंने पिछले 11 वर्षों से उपयोग किया है।
क्या मैं भी संभव करने की कोशिश कर रहा हूं? या मुझे इन मूल्यों को एक सरणी में रखना चाहिए और सरणी के माध्यम से लूप करना चाहिए? मुझे उत्पादन आईपी पते के साथ-साथ स्थान नामों के लिए भी यही बात चाहिए।
यह सब एक प्रयास है कि मैं रिमोट सर्वर पर फ़ाइलों को सिंक करने के लिए उपयोग किए जाने वाले कोड का एक ब्लॉक नहीं दोहराऊं।