Bashはデフォルトでは2次元配列をサポートしません。しかし、シミュレーションしたいと思います。最小限の作業例として、2つの配列があり、次のa0
ものがあるとしますa1
。
a0=(1 2 3 4)
a1=(5 6 7 8)
andの3番目の要素をfor
印刷するループを作成したいと思います。もちろん、2つの明示的な呼び出しを使用してこれを手動で実行できます。a0
a1
echo
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