「シェルスクリプトの基礎 - 配列」の版間の差分

📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

156行目: 156行目:
連想配列の定義は、<code>declare -A <配列名></code>と記述する。<br>
連想配列の定義は、<code>declare -A <配列名></code>と記述する。<br>
例えば、連想配列arrayを定義する場合は、<code>declare -A array</code>と記述する。<br>
例えば、連想配列arrayを定義する場合は、<code>declare -A array</code>と記述する。<br>
通常の配列は、<code>declare -a <配列名></code>と記述する。通常の変数は、<code>declare <変数名></code>とする。<br>
<br>
<br>
通常の配列は、<code>declare -a <配列名></code>と記述する。通常の変数は、<code>declare <変数名></code>とする。<br>
連想配列の値は、<code>連想配列名[キー]=値</code>と記述する。<br>
例えば、連想配列arrayにおいて、キーhogeに値10を代入する場合、<code>array["hoge"]=10</code>と記述する。<br>
引用符<code>""</code>または<code><nowiki>''</nowiki></code>を省略して、<code>array[hoge]=10</code>と記述してもよい。<br>
<br>
値の参照は、通常の配列と同様に<code>${array["hoge"]}</code>と記述する。ここでも、引用符""は省略できる。<br>
for文で配列の値を全て参照する場合も、通常の配列と同様、<code>for <変数名> in ${配列名[@]}</code>と記述できる。<br>
<br>
全てのキーの値を参照する場合、配列名の前に<code>!</code>記号を付加して、<code>for <変数名> in ${!配列名[@]}</code>と記述する。<br>
<br>
<br>
連想配列の値は、<code>連想配列名[キー]=値<code>と記述する。
以下の例では、連想配列arrayを定義して、hoge、piyo、fugaの点数を保存している。<br>
例えば、連想配列arrayにおいて、キーhogeに値10を代入する場合、<code>array["hoge"]=10</code>と記述する。
1つ目のfor文では、全員の値を順次表示して、2つ目のfor文では、全員の名前と値(キーと値)を表示している。<br>
引用符""を省略して、<code>array[hoge]=10</code>と記述してもよい。
 
値の参照は、通常の配列と同様に<code>${array["hoge"]}</code>と記述する。ここでも、引用符""は省略できる。
for ~ in」で配列の値を全て参照したい場合も、通常の配列同様、「for 変数名 in ${配列名[@]}」のようにします。
 
 
 全てのキーの値を参照したい場合は、配列名の前に「!」記号を付けて、「for 変数名 in ${!配列名[@]}」のようにします。
 
 以下のサンプルスクリプト(arraytest)では、連想配列「exam」を定義し、suzuki、tanaka、yamamotoの点数を保存しています。そして、1つ目のfor文では全員の点数を順次表示し、2つ目のfor文では全員の名前と点数(キーと値)を表示しています。なお、サンプルスクリプトでは、suzukiが連想配列のキーであることを分かりやすくするために、キーに引用符を使用しています。
  <syntaxhighlight lang="sh">
  <syntaxhighlight lang="sh">
  #!/bin/sh
  #!/bin/sh
   
   
  declare -A array
  declare -A array
  array["hoge"]=10
  array["hoge"]=10
  array["piyo"]=20
  array["piyo"]=20
  array["fuga"]=30
  array["fuga"]=30
   
   
  for e in ${exam[@]}  
  for VALUE in ${array[@]}  
  do  
  do  
     echo $e
     echo "$VALUE"
  done
  done
for k in ${!exam[@]}
do
echo ""
  echo "key : $k"
  echo "value: ${exam[$k]}"
for KEY in ${!array[@]}
done
do
    echo "key   : $KEY"
    echo "value : ${array[$KEY]}"
done
# 出力
10
20
30
key  : hoge
value : 10
key  : piyo
value : 20
key  : fuga
value : 30
</syntaxhighlight>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:シェルスクリプト]]
[[カテゴリ:シェルスクリプト]]