📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| 202行目: | 202行目: | ||
key : fuga | key : fuga | ||
value : 30 | value : 30 | ||
</syntaxhighlight> | |||
<br><br> | |||
== 連想配列の値の変更 == | |||
連想配列において、既存のキーを指定して値を代入する場合は値の変更、新しいキーを指定して値を代入する場合は値の追加となる。<br> | |||
<br> | |||
<syntaxhighlight lang="sh"> | |||
#!/bin/sh | |||
declare -A array | |||
array["hoge"]=10 | |||
array["piyo"]=20 | |||
array["fuga"]=30 | |||
for KEY in ${!array[@]} | |||
do | |||
echo "key : $KEY" | |||
echo "value : ${array[$KEY]}" | |||
done | |||
echo "== Change ==" | |||
array["hoge"]=400 #キーhogeの値の変更 | |||
array["piyo"]=500 #キーpiyoと値の追加 | |||
for KEY in ${!array[@]} | |||
do | |||
echo "key : $KEY" | |||
echo "value : ${array[$KEY]}" | |||
done | |||
# 出力 | |||
key : hoge | |||
value : 10 | |||
key : piyo | |||
value : 20 | |||
key : fuga | |||
value : 30 | |||
==change== | |||
key : hoge | |||
value : 400 | |||
key : piyo | |||
value : 500 | |||
key : fuga | |||
value : 30 | |||
</syntaxhighlight> | |||
<br><br> | |||
== 連想配列に値をまとめて代入 == | |||
連想配列に値をまとめて代入する場合、<code>配列名=([キー]=値 [キー]=値)</code>のように、キーと値のペアで代入する。<br> | |||
連想配列の末尾にキーと値を追加する場合は、<code>+=</code>を使用して<code>配列名+=([キー]=値 [キー]=値)</code>と記述する。<br> | |||
<syntaxhighlight lang="sh"> | |||
# 連想配列arrayを定義 | |||
declare -A array | |||
# 連想配列arrayに値を代入 | |||
array=(["hoge"]=10 ["piyo"]=20 ["fuga"]=30) | |||
for KEY in "${!array[@]}" | |||
do | |||
echo "$KEY ${array[$KEY]}" | |||
done | |||
# 連想配列arrayの末尾にキーと値をまとめて代入 | |||
array+=(["hoge"]=15 ["foo"]=40) | |||
for KEY in "${!array[@]}" | |||
do | |||
echo "$KEY ${array[$KEY]}" | |||
done | |||
# 出力 | |||
hoge 10 | |||
piyo 20 | |||
fuga 30 | |||
piyo 20 | |||
fuga 30 | |||
hoge 15 # キーhogeの値が変更される | |||
foo 40 # キーfooと値が追加される | |||
</syntaxhighlight> | |||
<br><br> | |||
== 連想配列のコピー == | |||
連想配列のコピーは、個々のキーと値をコピーする必要がある。<br> | |||
なお、この方法は、連想配列ではない通常の配列にも使用できる。<br> | |||
<syntaxhighlight lang="sh"> | |||
declare -A array1 | |||
declare -A array2 | |||
# 連想配列array1の定義 | |||
array1["NG"]="red" | |||
array1["OK"]="green" | |||
# 連想配列array2に連想配列array1をコピー | |||
for i in ${!array1[@]} | |||
do | |||
array2[$i]=${array1[$i]} | |||
done | |||
echo ${array1[@]} # array1のキーと値(redとgreen)が表示される | |||
echo ${array2[@]} # 上と同じ内容が表示される | |||
echo ${!array1[@]} # 連想配列array1のキー(NGとOK)が表示される | |||
echo ${!array2[@]} # 上と同じ内容が表示される | |||
echo ${array1["NG"]} # redが表示される | |||
echo ${array2["OK"]} # greenが表示される | |||
declare -a week1 # 通常の配列week1を定義 | |||
declare -a week2 # 通常の配列week2を定義 | |||
week1=(Sun Mon Tues Wed Thur Fri Sat) | |||
# 通常の配列のコピー | |||
for i in ${!week1[@]} | |||
do | |||
week2[$i]=${week1[$i]}; | |||
done | |||
echo ${week1[@]} | |||
echo ${week2[@]} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> | ||