Bash の多次元配列
多次元配列は、どのプログラムにとっても非常に重要な要素です。 主に、データのテーブル ビューを作成するため、および他の多くの目的で使用されます。
この記事では、2 次元配列を作成する方法について説明します。 また、必要な例と説明を使用してトピックについて説明します。
ここでは、2つの異なる方法について説明します。
Bash で多次元配列を宣言する基本的な方法
これは、多次元配列を作成する最も基本的な方法です。 以下の例では、非常に基本的な 2 次元配列を作成します。
以下は、この例のコードです。
ArrayOfArray_1=("Alen" "24")
ArrayOfArray_2=("Walker" "31")
MainArray=(
ArrayOfArray_1[@]
ArrayOfArray_2[@]
)
ArrayLength=${#MainArray[@]}
for ((i=0; i<$ArrayLength; i++))
do
name=${!MainArray[i]:0:1}
age=${!MainArray[i]:1:1}
echo "Name : ${name}"
echo "Age : ${age}"
done
上記のコードは、ArrayOfArray_1
と ArrayOfArray_2
という名前の 2つの異なる配列を宣言したことを示しています。 その後、メインの配列を宣言しました。その要素は、最近宣言したこれら 2つの配列です。
次に、ループの配列の長さを計算しました。 ループ内で、メイン配列にインデックスを付けて、これら 2つのサブ配列からデータを抽出します。
最後に、最終結果を echo
します。 スクリプトを実行すると、以下のような出力が得られます。
Name : Alen
Age : 24
Name : Walker
Age : 31
Bash で連想配列を使用して 2 次元配列を宣言する
この方法は少し複雑です。 このメソッドでは、連想配列という名前の特別な Bash スクリプト配列について説明します。
連想配列は、文字列値をキーまたはインデックスとして格納できる特別な配列です。 他のプログラミング言語と同じです。
連想配列を宣言するための一般的な構文は、declare -A ArrayName
です。
以下の例では、5つの行と 6つの列を含む 2D 配列を作成します。 以下は、この例のコードです。
declare -A Array2D
RowNum=5
ColumnNum=6
for ((i=1;i<=RowNum;i++)) do
for ((j=1;j<=ColumnNum;j++)) do
Array2D[$i,$j]=$RANDOM
done
done
f1="%$((${#RowNum}+1))s"
f2=" %9s"
printf "$f1" ''
for ((i=1;i<=RowNum;i++)) do
printf "$f2" $i
done
echo
for ((j=1;j<=ColumnNum;j++)) do
printf "$f1" $j
for ((i=1;i<=RowNum;i++)) do
printf "$f2" ${Array2D[$i,$j]}
done
echo
done
上記の例では、Array2D
という名前の連想配列を宣言しました。
その後、2つの変数を作成し、整数値を割り当てました。 この整数値は、行と列の数を指定します。
次に、配列を乱数で埋めるネストされたループを作成しました。
これで、配列の宣言と整理が完了しました。 2D 配列がどのように見えるかを見てみましょう。
コードに見られるように、いくつかのループを使用してこれを行います。 上記のスクリプトを実行すると、次のような出力が表示されます。
1 2 3 4 5
1 16700 5241 2599 24330 1662
2 23264 19557 10425 13413 25606
3 17987 4199 13598 23897 26734
4 24420 27830 24855 8165 13531
5 15495 18790 13347 12947 11826
6 23458 22838 137 32454 32441
この記事のコードはすべて Bash で記述されています。 Linux シェル環境でのみ動作します。
Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.
LinkedIn