bashで連想配列を扱う方法を解説

Bash

本記事では、bashで連想配列を扱う方法を解説します。

declareとは

bashでは変数を使用する前に明示的に宣言する必要はありませんが、特定のタイプの変数(連想配列など)を使用する場合にはdeclareコマンドを使って宣言する必要があります。declareコマンドはbashの組み込みコマンドで、変数の属性を設定したり表示したりするために使用されます。連想配列を宣言する場合は、-Aオプションを使用します。

連想配列とは

連想配列は、通常の配列とは異なり、インデックスとして整数だけではなく任意の文字列を使用できる配列です。これにより、キーと値のペアを保存することができ、データの構造化に非常に便利です。bashでは、バージョン4.0以降で連想配列がサポートされています。

構文

連想配列の基本的な構文は以下の通りです。

宣言

連想配列を使用する前に、まず-Aオプション付きでdeclareコマンドを使って宣言します。

declare -A 配列名

値の設定

宣言した連想配列にキーと値のペアを設定します。配列名の後に角括弧でキーを指定し、値を代入します。

配列名[キー]=値

複数の値を一度に設定

複数のキーと値のペアを一度に設定する場合は、以下の構文を使用します。

配列名=([キー1]=値1 [キー2]=値2 ...)

値の取得

連想配列から値を取得するには、配列名とキーを指定します。変数展開の構文を使用します。

${配列名[キー]}

全てのキーの取得

連想配列の全てのキーを取得するには、!を付けて変数展開を行います。

${!配列名[@]}

全ての値の取得

連想配列の全ての値を取得するには、以下の構文を使用します。

${配列名[@]}

使い方

基本的な使い方を実例で見ていきましょう。

連想配列の宣言と値の設定

連想配列を宣言し、個別にキーと値のペアを設定する例です。

#!/bin/bash

# 連想配列を宣言
declare -A fruits

# 個別に値を設定
fruits[apple]="りんご"
fruits[banana]="バナナ"
fruits[orange]="オレンジ"

# 値を表示
echo ${fruits[apple]}
# 出力: りんご

一度に複数の値を設定

連想配列を宣言と同時に複数の値を設定する例です。

#!/bin/bash

# 連想配列を宣言し、同時に値を設定
declare -A colors=([red]="赤" [blue]="青" [green]="緑")

# 値を表示
echo ${colors[red]}
echo ${colors[blue]}
# 出力: 赤
# 出力: 青

全てのキーと値を取得

連想配列の全てのキーと値を取得し、表示する例です。

#!/bin/bash

declare -A user=([name]="山田太郎" [age]="30" [job]="エンジニア")

# 全てのキーを取得
echo "キー一覧:"
for key in ${!user[@]}; do
    echo "- $key"
done

# 全ての値を取得
echo "値一覧:"
for value in ${user[@]}; do
    echo "- $value"
done

# キーと値のペアを取得
echo "キーと値のペア:"
for key in ${!user[@]}; do
    echo "$key: ${user[$key]}"
done

# 出力例:
# キー一覧:
# - name
# - age
# - job
# 値一覧:
# - 山田太郎
# - 30
# - エンジニア
# キーと値のペア:
# name: 山田太郎
# age: 30
# job: エンジニア

注意点

順序が保持されない

連想配列では、要素の順序は保持されません。キーを取得する際(${!array[@]})、取得される順序は挿入した順序と異なる場合があります。

#!/bin/bash

declare -A numbers=([one]=1 [two]=2 [three]=3 [four]=4)

# キーの出力順序は不定
echo "キー一覧:"
for key in ${!numbers[@]}; do
    echo "$key"
done

# 出力例:
# キー一覧:
# three
# four
# one
# two

bashのバージョン確認

連想配列はbash 4.0以降でサポートされています。使用前にbashのバージョンを確認しましょう。

#!/bin/bash

# bashのバージョン確認
bash_version=$BASH_VERSION
echo "Bashバージョン: $bash_version"

# バージョンチェック
if [[ ${bash_version%%.*} -lt 4 ]]; then
    echo "連想配列はbash 4.0以降でサポートされています"
    exit 1
fi

# 連想配列の使用
declare -A myarray
myarray[key]="value"
echo ${myarray[key]}

# 出力例:
# Bashバージョン: 5.1.16
# value

空白を含むキーや値の扱い

キーや値に空白が含まれる場合は、適切に引用符で囲む必要があります。

#!/bin/bash

declare -A complex

# 空白を含むキーと値
complex["first name"]="John"
complex["last name"]="Doe"

# 正しく取得するには引用符が必要
echo "${complex["first name"]} ${complex["last name"]}"

# 出力:
# John Doe

まとめ

bashの連想配列は、キーと値のペアでデータを扱いたい場合に非常に便利な機能です。この記事では以下の内容を解説しました。

  • declare -Aを使用して連想配列を宣言する方法
  • 連想配列の基本的な操作(値の設定、取得、全キー・全値の取得)
  • 連想配列を使用する際の注意点(順序が保持されない、バージョン依存、空白を含む要素の扱い)
  • 応用例(設定ファイルの読み込み、簡易JSONパース)

連想配列を活用することで、bashスクリプトでもより構造化されたデータ処理が可能になります。bash 4.0以降を使用している環境であれば、ぜひ活用してみてください。

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