ループ変数

ループ変数

私は約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

おすすめ記事