Estoy escribiendo un script bash para usar rsync y actualizar archivos en unos 20 servidores diferentes.
Tengo la parte rsync resuelta. Lo que me está costando es revisar una lista de variables.
Mi script hasta ahora se ve así:
#!/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
Donde [Server IP Address]
debe ser el valor de la variable asociada. Entonces, cuando i = 1, debería hacer eco del valor de $ SERVER1.
He intentado varias iteraciones de esto, incluyendo
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
Ha pasado mucho tiempo desde que escribí el guión, así que sé que me falta algo. Además, estoy seguro de que estoy mezclando lo que podría hacer con C #, que he usado durante los últimos 11 años.
¿Es posible lo que intento hacer? ¿O debería poner estos valores en una matriz y recorrer la matriz? Necesito lo mismo para las direcciones IP de producción, así como los nombres de ubicación.
Todo esto es un esfuerzo para no tener que repetir un bloque de código que usaré para sincronizar los archivos en el servidor remoto.