私は約20の異なるサーバーでrsyncファイルとアップデートファイルを使用するためのbashスクリプトを書いています。
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年間C#を使用してきました。
私がしたいことが可能なことですか?それとも、値を配列に入れて配列を繰り返す必要がありますか?本番 IP アドレスとロケーション名にも同じことが必要です。
これは、リモートサーバーでファイルを同期するために使用するコードブロックを繰り返す必要がないことです。
ベストアンサー1
配列を使用してください。
#! /bin/bash
servers=( 192.xxx.xxx.2 192.xxx.xxx.3
192.xxx.xxx.4 192.xxx.xxx.5
192.xxx.xxx.6 192.xxx.xxx.7
)
for server in "${servers[@]}" ; do
echo "$server"
done