forループを使用してbash内の複数の配列を巡回する

forループを使用してbash内の複数の配列を巡回する

Bashはデフォルトでは2次元配列をサポートしません。しかし、シミュレーションしたいと思います。最小限の作業例として、2つの配列があり、次のa0ものがあるとしますa1

a0=(1 2 3 4)
a1=(5 6 7 8)

andの3番目の要素をfor印刷するループを作成したいと思います。もちろん、2つの明示的な呼び出しを使用してこれを手動で実行できます。a0a1echo

echo ${a0[2]}
echo ${a1[2]}

しかし、私はforこれをループを使って要約したいと思います。どうすればいいですか?

私は以下を試しました:

for i in ${a0[@]} ${a1[@]}
do
echo {$i}[2]
echo ${i[2]}
echo ${i}[2]
echo ${$i[2]}
echo ${${i}[2]}
done

しかし、これらの試みは成功しませんでした。私は次のような結果を得ます。

{1}[2]

1[2]
chgreen.sh: line 30: ${$i[2]}: bad substitution

どんな考えがありますか?

ベストアンサー1

あなたは間違ったことを繰り返しています。for配列の各要素を$i配列のインデックスではなくとして格納します。あなたが望むものは次のとおりです

#!/usr/bin/env bash
a0=(1 2 3 4)
a1=(5 6 7 8)

for ((i=0;i<${#a0[@]};i++))
do
    echo ${a0[$i]} ${a1[$i]};
done

おすすめ記事