GNU/Linux >> Linux の 問題 >  >> Linux

Bashの連想配列

プログラマーなら誰でも、変数がいかに重要であるかを知っています。変数は、情報をやり取りするコーダー/プログラマーのウェイステーションとして機能します。変数は、コードを動的にすることができるため、一般的にコンピューティングにおいて重要です。言い換えると、変数は、使用法に応じて繰り返し変化する情報プレースホルダーと呼ばれます。ただし、ほとんどのコーダーとプログラマーに影響を与えている重大な問題は、プロジェクト内の多くの変数を追跡することです。

これは、この分野のほとんどのプログラマーにとって厄介な傾向があります。この問題に対する究極の解決策は、配列です。プログラミングにおける配列は、同じデータ型の要素を格納するデータ構造として知られています。配列は、データのコレクションのストレージに最適です。配列は、Bashなどのスクリプト言語を忘れずに、ほとんどすべてのコーディング言語にとって非常に重要です。この記事では、Bashの連想配列に焦点を当てます。

シェルスクリプト言語は、インデックス付き配列を作成、クエリ、更新、および操作する機能をユーザーに提供することが知られています。インデックス付き配列という用語は、接頭辞として数字が付いたアイテムのリストであるため、混同しないでください。リストと割り当てられた番号は変数でラップされているため、コードを簡単に提示できます。

Bashの連想配列

Bashスクリプト言語には、連想配列を作成でき、配列を通常の配列として扱うため、追加の利点があります。連想配列の主な機能により、ユーザーは、番号付きの値だけでなく、キー/インデックスと値を含むリストを作成できます。連想配列の機能はbash4に含まれています。つまり、始める前に、以下のコマンドラインを使用してBashの現在のバージョンを確認します。

bash --version

出力

bashのバージョンがバージョン4以降でない場合は、動作するように更新する必要があります。関係する手順は簡単なので、心配する必要はありません。 Bashは、有名なapt-getコマンドを使用してUbuntuサーバーで更新できます。一部のユーザーは、Bashをアップグレードする必要がある場合があります。そのためには、ターミナルを開いて次のコマンドを実行します。

sudo apt-get install --only-upgrade Bash

このコマンドは、bashシェルをUbuntuオペレーティングシステムの最新バージョンに更新します。更新が成功したことを確認するには、上記のコマンドを実行して、インストール/更新されたバージョンのbashシェル(Bash –version)を確認します。このコマンドは、Ubuntuサーバーに現在のbashシェルバージョンを含むコンソールを出力します。
場合によっては、UbuntuサーバーにBashがインストールされていない場合でも、びっくりしないでください。以下のコマンドを実行してBashをインストールします:

sudo apt update
sudo apt install bash

連想配列の宣言と初期化

Bashでは、キーワード「declare」を使用して連想配列を宣言できます。一方、配列要素は、配列宣言中または変数宣言後に初期化できます。以下のスクリプトは、assArray1という名前の配列を作成し、他の4つの配列値は示されているように個別に初期化されます

declare -A assArray1
assArray1[fruit]=Mango
assArray1[bird]=Cockatail
assArray1[flower]=Rose
assArray1[animal]=Tiger

出力

配列宣言中に、assArray2という名前の次のスクリプトが連想配列を初期化します。宣言時に、キーを持つ3つの配列値が定義されます。

declare -A assArray2=( [HDD]=Samsung [Monitor]=Dell [Keyboard]=A4Tech )

出力

連想配列にアクセスする方法

ユーザーが連想配列にアクセスできる形式は2つあります。まず、個別にアクセスでき、次に、ループを使用してアクセスできます。上記の方法はチュートリアルで説明されるため、心配する必要はありません。配列のキーと値は、一緒に印刷することも、別々に印刷することもできることに注意してください。キー値を指定すると、以下のコマンドラインで2つの配列値が出力されます。説明のためにassArray1を使用します。

echo ${assArray1[bird]}
echo ${assArray1[flower]}

出力

上で強調表示されたコマンドラインを実行すると、以下のような画面が表示されます。

印刷するときに、配列のすべてのキーと値を印刷する必要がある場合があります。これは、bashの境界拡張またはループを使用して実行できます。まず、ループを使用した印刷を見てみましょう。以前にプログラミングクラスに行ったことがある場合は、この用語に何度か出くわしたことがあるはずです。以下のコマンドを実行して、配列のすべてのキーと値を出力します。

for key in "${!assArray1[@]}"; do echo $key; done

出力

次のコマンドは、bashパラメーター展開を使用して、配列のすべてのキーと値を出力します

echo "${!assArray1[@]}"

出力

注:両方のコマンドの「!」記号は、連想配列のキーを読み取るために使用されます。

したがって、すべての配列値は、bashパラメーター展開またはループのいずれかを使用して出力できることがわかりました。以下は、2つの方法の使用について詳しく説明する別の例です。最初のコマンドはループを使用して配列値を出力しますが、2番目のコマンドはbashパラメーター展開を使用して配列値を出力します。

for val in "${assArray1[@]}"; do echo $val; done

出力

echo "${assArray1[@]}"

出力

注:loopメソッドを使用して、連想配列のキーと値の両方を出力できます。説明のために、最初の配列assArray1を使用します。この方法では、ループのすべてのステップで各配列キーを解析する必要があります。使用されたキーは、対応するキーの値を読み取るのに役立つ配列インデックスとして使用されます。
以下のコマンドラインを実行します

for key in "${!assArray1[@]}"; do echo "$key => ${assArray1[$key]}"; done

出力

連想配列にデータを追加する方法

配列の宣言と初期化の後、連想配列に新しい配列要素を追加することができます。 2番目の配列assArray2を使用して、新しい値「HP」とキー「Mouse」が配列に追加され、その後、配列の現在の要素が再チェックされます。上記の手順を完了するには、次のコマンドを実行します

echo "${assArray2[@]}"
assArray2+=([Mouse]=Logitech)
echo "${assArray2[@]}"

出力

上記のコマンドを実行すると、以下のような出力が得られます。

連想配列からデータを削除する方法

キー値に基づいて、連想配列の要素値を削除できます。データを削除するときは、「unset」コマンドが便利です。このコマンドは、連想配列内の特定のデータを削除します。たとえば、assArray2から、「Monitor」キーを含む値を削除しましょう。コマンドは、値に「監視」キーがあるかどうかを確認します。次に、設定されていないコマンドの助けを借りて、値が削除されます。 「echo」コマンドは、値が削除されたかどうかを確認するために使用されます。

unset assArray2[Monitor]
echo ${assArray2[Monitor]}

出力

コマンドが正常に実行されると、以下で強調表示されているものと同様の出力が得られます

連想配列で欠落しているインデックスを見つける方法

この場合、条件付きステートメントは、配列に欠落しているインデックスがあるかどうかを知るのに役立つため、非常に重要です。たとえば、最近削除したアレイキー「Monitor」を確認できます。そのためには、ifステートメントコマンドを実行して、キーが存在するかどうかを確認します。前の例からキーを削除したことを忘れないでください。したがって、false値を出力する必要があります。

if [ ${assArray2[Monitor]+_} ]; then echo "Found"; else echo "Not found"; fi

出力

連想配列を削除する方法

連想配列からデータを削除するために使用される「unset」コマンドは、連想配列を削除するためにも使用されます。この例では、最初の配列assArray1を使用します。最初のコマンドは、配列の値を出力します。 「unset」コマンドを含む2番目のコマンドは、アレイを削除します。最後のコマンドは、アレイが存在するかどうかを確認します。アレイが正常に削除された場合、出力コンソールには何も表示されません。

echo "${assArray1[@]}"
unset assArray1
echo "${assArray1[@]}"

出力

データ配列

関連データの保存には、配列が重要です。変数を使用してデータを保存するように求められる場合がありますが、これは大きなデータトラックを保存および追跡するための最も適切な方法ではありません。したがって、データのインデックスを作成して統合するためには、配列を使用する必要があります。さらに、データを格納および追跡するための配列の使用は、変数の使用よりも効率的です。配列は、変数のように存在するためのエントリを必要としません。作業する前に、保存されるデータの正確な量について心配する必要はありません。これにより、大規模で予測不可能なデータを処理するときにアレイが有利になります。つまり、配列は変数よりもはるかに強力であり、ほとんどのプログラミング言語やBashなどのスクリプト言語で一般的に使用されています。

結論

キーと値のペアを含む大量のデータをBashに保存する場合は、データストレージに連想配列を使用することが重要です。この記事では、連想配列の宣言と初期化、配列のキーと値の解析、配列要素の追加と削除、連想配列とデータ配列の削除の方法について説明しました。したがって、すべての読者が、連想配列の知識と理解を向上させるためにカバーされているすべてのトピックを実装できるようになることを願っています。今すぐお試しください。


Linux
  1. 15 の例を含む究極の Bash Array チュートリアル

  2. awk の bash キャプチャ出力を配列に

  3. bashで2D配列を宣言する方法

  1. Bashの文字列/配列から一意の要素の配列を作成するにはどうすればよいですか?

  2. bash ですべてのネットワーク インターフェイスを含むアレイを作成する

  3. パスの bash 配列から不足しているパスを抽出する

  1. Bash変数代入の単一括弧?

  2. 配列のBash配列?

  3. すべてのファイルを取得しますが、ファイルは配列内にあります– Bash?