連想配列のセット
連想配列宣言
変数を連想配列として扱うには、変数宣言で-Aオプションを利用します。
連想配列の宣言
declare-A musics
初期セット
連想配列の宣言と同時に連想配列のセットも同時に行う場合は()で囲みます。
連想配列初期セット
declare-Amusics=(["ultra soul"]="2001"["OCEAN"]="2005"["BANZAI"]="2004"["RED"]="2015"["GIFT"]="2008")連想配列の追加
連想配列の追加は以下のような指定します。
連想配列追加
musics["ARIGATO"]="2004"連想配列の値変更
連想配列の値を変更する場合は、追加と同じ書き方になります。
連想配列の値変更
declare-Amusics=(["OCEAN"]="2005")
musics["OCEAN"]="2005"連想配列の削除
連想配列に設定したものを削除する場合は、unsetを利用します。
連想配列の削除
unset musics["GIFT"]連想配列の表示
指定したキーの値を取得
連想配列から指定したキーの値を取得する場合は${連想配列変数["キー"]}のように指定します。
指定したキーの値を取得
echo"${musics["ultra soul"]}"設定されている配列数を数える
連想配列に設定されている配列の数を数える場合は${#連想配列変数[@]}のようにします。
指定したキーの値を取得
echo"count:${#musics[@]}"キーが存在しているか確認
連想配列に指定したキーが存在するか確認する場合は、if文に-nオプションまたは-zオプションを利用してキーを利用して連想配列から取り出せるかを確認します。
キーが存在する場合処理
declare-Amusics=(["ultra soul"]="2001")if[-n"${musics["ultra soul"]}"];then
echo"exist"fi
if[-n"${musics["GIFT"]}"];then
echo"not exist"fi# existのみが表示されるキーが存在しない場合処理
declare-Amusics=(["ultra soul"]="2001")if[-z"${musics["ultra soul"]}"];then
echo"exist"fi
if[-z"${musics["GIFT"]}"];then
echo"not exist"fi# not existのみが表示される連想配列ループ
キーを表示する
連想配列にセットされているキーをループして表示する。${!連想配列名[@]}を利用します。
キーを表示
declare-Amusics=(["ultra soul"]="2001"["OCEAN"]="2006")for music in"${!musics[@]}";do
echo"${music}"done# 処理結果# ultra soul# OCEAN値を表示する
連想配列にセットされている値をループして表示する。${連想配列名[@]}を利用します。!マークをつけないのがポイントです。
キーを表示
declare-Amusics=(["ultra soul"]="2001"["OCEAN"]="2006")for music in"${musics[@]}";do
echo"${music}"done# 処理結果# 2001# 2006キーと値を同時に表示する
連想配列にセットされているキーと値のセットを同時に表示する場合は、キーを表示する時のループを利用して取り出します。
キーを表示
declare-Amusics=(["ultra soul"]="2001"["OCEAN"]="2006")for music in"${!musics[@]}";do
echo"${music}:${musics[${music}]}"done# 処理結果# ultra soul:2001# OCEAN:2005上記全てをまとめた結果
以上で終わりですが、上記をまとめたshellを乗せておきます。
#!/bin/bash# setdeclare-Amusics=(["ultra soul"]="2001"["OCEAN"]="2006"["BANZAI"]="2004"["RED"]="2015"["GIFT"]="2008")
musics["ARIGATO"]="2004"
musics["OCEAN"]="2005"unset musics["GIFT"]# readecho"${musics["ultra soul"]}"echo"count:${#musics[@]}"echo"# -n option"if[-n"${musics["ultra soul"]}"];then
echo"exist"fi
if[-n"${musics["GIFT"]}"];then
echo"not exist"fi
echo"# -z option"if[-z"${musics["ultra soul"]}"];then
echo"exist"fi
if[-z"${musics["GIFT"]}"];then
echo"not exist"fi# forecho"# for key loop"for music in"${!musics[@]}";do
echo"${music}"done
echo"# for value loop"for music in"${musics[@]}";do
echo"${music}"done
echo"# for key/value loop"for music in"${!musics[@]}";do
echo"${music}:${musics[${music}]}"done実行結果
2001
count:5
#-n option
exist
#-z option
not exist
#for key loop
OCEAN
ARIGATO
BANZAI
ultra soul
RED
#for value loop
2005
2004
2004
2001
2015
#for key/value loop
OCEAN:2005
ARIGATO:2004
BANZAI:2004
ultra soul:2001
RED:2015