Tôi đang viết một tập lệnh bash để sử dụng rsync và cập nhật các tệp trên khoảng 20 máy chủ khác nhau.
Tôi có phần rsync đã tìm ra. Những gì tôi gặp rắc rối là thông qua một danh sách các biến.
Kịch bản của tôi cho đến nay trông như thế này:
#!/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
Trường hợp [Server IP Address]
nên là giá trị của biến liên quan. Vì vậy, khi i = 1 tôi nên lặp lại giá trị của $ SERVER1.
Tôi đã thử một vài lần lặp lại điều này bao gồm
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
Đã lâu lắm rồi tôi mới viết kịch bản nên tôi biết mình đang thiếu thứ gì đó. Thêm vào đó, tôi chắc chắn rằng tôi đang pha trộn những gì tôi có thể làm bằng C #, thứ mà tôi đã sử dụng trong 11 năm qua.
Là những gì tôi đang cố gắng làm thậm chí có thể? Hoặc tôi nên đặt các giá trị này trong một mảng và lặp qua mảng? Tôi cần điều tương tự cho các địa chỉ IP sản xuất cũng như tên địa điểm.
Đây là tất cả trong một nỗ lực để không phải lặp lại một khối mã tôi sẽ sử dụng để đồng bộ hóa các tệp trên máy chủ từ xa.