Я пишу bash-сценарій для використання rsync та оновлення файлів приблизно на 20 різних серверах.
У мене 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]
має бути значення пов'язаної змінної. Тож, коли я = 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 років.
Чи можливо те, що я намагаюся зробити? Або я повинен вводити ці значення в масив і перебирати через масив? Мені потрібно це саме для виробництва IP-адрес, а також імен локацій.
Це все для того, щоб не потрібно повторювати блок коду, який я буду використовувати для синхронізації файлів на віддаленому сервері.