Bash の多次元配列

MD Aminul Islam 2023年6月20日
  1. Bash で多次元配列を宣言する基本的な方法
  2. Bash で連想配列を使用して 2 次元配列を宣言する
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_1ArrayOfArray_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 シェル環境でのみ動作します。

著者: MD Aminul Islam
MD Aminul Islam avatar MD Aminul Islam avatar

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

関連記事 - Bash Array