【Shell】連想配列:要素の追加・削除

■連想配列とは

連想配列とはキーと値(要素)の組み合わせを保持したデータ構造である。
※ハッシュ、マップ、辞書型など呼ばれる場合もある。

★連想配列のイメージ
 キー:都道府県
 要素:県庁所在地

参考:配列については以下を参照ください。

■連想配列の変数宣言とデータのセット

連想配列を使用する場合は必ず変数宣言を行う必要がある。

▼サンプルコード

#!/bin/bash

# 連想配列の変数宣言
declare -A prefectures

# 連想配列にキーと要素を格納
prefectures=([No1]=Hokkaido [No2]=Okinawa [No3]=Tokyo)

echo "#########キーと要素を格納#########"

# No1を表示
echo ${prefectures[No1]}

# 要素数を表示
echo ${#prefectures[@]}

# 全てのキーを表示
echo "${!prefectures[@]}"

# 全ての要素を表示
echo "${prefectures[@]}"

▼実行結果

#########キーと要素を格納#########
Hokkaido
3
No3 No2 No1
Tokyo Okinawa Hokkaido

★連想配列は、全てのキーと値(要素)を表示した場合、配列のインデックスの「何番目」という考え方ではなく、キーと値(要素)の関係で維持されているため、格納した順番は維持されない。

▼イメージ図

■要素の追加

要素の追加は以下の通り、連想配列名[キー項目名]=値(要素)で追加することができる。

▼サンプルコード

#!/bin/bash

# 連想配列の変数宣言
declare -A prefectures

# 連想配列にキーと要素を格納
prefectures=([No1]=Hokkaido [No2]=Okinawa [No3]=Tokyo)

echo "#########要素を追加#########"

# 要素を追加
prefectures[No4]=Osaka

# No4を表示
echo ${prefectures[No4]}

# 全てのキーを表示
echo "${!prefectures[@]}"

# 全ての要素を表示
echo "${prefectures[@]}"

▼実行結果

#########要素を追加#########
Osaka
No4 No3 No2 No1
Osaka Tokyo Okinawa Hokkaido

▼イメージ図

■要素の置換

すでに設定されている要素の置換を行う場合は、連想配列名[設定済のキー項目名]=値(要素)で置換する。

▼サンプルコード

#!/bin/bash

# 連想配列の変数宣言
declare -A prefectures

# 連想配列にキーと要素を格納
prefectures=([No1]=Hokkaido [No2]=Okinawa [No3]=Tokyo)

echo "#########要素を置換#########"

# 要素を置換
prefectures[No2]=Kyoto

# 全てのキーを表示
echo "${!prefectures[@]}"

# 全ての要素を表示
echo "${prefectures[@]}"

▼実行結果

#########要素を置換#########
No3 No2 No1
Tokyo Kyoto Hokkaido

▼イメージ図

■要素の削除

すでに設定されている要素の削除を行う場合は、unset 連想配列名[設定済のキー項目名]で削除する。

▼サンプルコード

#!/bin/bash

# 連想配列の変数宣言
declare -A prefectures

# 連想配列にキーと要素を格納
prefectures=([No1]=Hokkaido [No2]=Okinawa [No3]=Tokyo)

echo "#########要素を削除#########"

# 要素を削除
unset prefectures[No2]

# 全てのキーを表示
echo "${!prefectures[@]}"

# 全ての要素を表示
echo "${prefectures[@]}"

▼実行結果

#########要素を削除#########
No3 No1
Tokyo Hokkaido

▼イメージ図

タイトルとURLをコピーしました