Bashシェルスクリプトのforループ内の2つの変数

Bashシェルスクリプトのforループ内の2つの変数
for SLAVE_CLUSTER,MASTER_CLUSTER in $MASTER_CLUSTERS $SLAVE_CLUSTERS
do
      echo "Master cluster boxes are ${!MASTER_CLUSTER}"
      echo "Slave cluster boxes are ${!SLAVE_CLUSTER}"
done

forループからSLAVE_CLUSTER値を取得しようとしてMASTER_CLUSTERエラーが発生します。forループ内の両方の変数をどのように取得できますか?


これは私のマスター - スレーブクラスタ変数です。

export MASTER_CLUSTER_1="MASTER1 MASTER2"
echo "MASTER_CLUSTER_1 = $MASTER_CLUSTER_1"
export MASTER_CLUSTER_2="MASTER1 MASTER2"
echo "MASTER_CLUSTER_2 = $MASTER_CLUSTER_2"
export SLAVE_CLUSTER_1="SLAVE1 SLAVE2 SLAVE3 SLAVE4"
echo "SLAVE_CLUSTER_1 = $SLAVE_CLUSTER_1"
export SLAVE_CLUSTER_2="SLAVE1 SLAVE2 SLAVE3 SLAVE4"
echo "SLAVE_CLUSTER_2 = $SLAVE_CLUSTER_2"

ベストアンサー1

シングルループの必要性がわからない。次のように、2つの連続ループを使用して同じ出力を得ることができます。

for MASTER_CLUSTER in $MASTER_CLUSTERS

    do
          echo "Master cluster boxes are ${!MASTER_CLUSTER}"
    done

for SLAVE_CLUSTER in $SLAVE_CLUSTERS
    do
          echo "Slave cluster boxes are ${!SLAVE_CLUSTER}"
    done

または値を置き換える必要がある場合

for MASTER_CLUSTER in $MASTER_CLUSTERS
    do 
    echo "Master cluster boxes are ${!MASTER_CLUSTER}"
    for SLAVE_CLUSTER in $SLAVE_CLUSTERS
       do
          echo "Slave cluster boxes are ${!SLAVE_CLUSTER}"
       done
    done

おすすめ記事