配列(連想配列)

配列(bash)

初期化

 ARR[0]=1
 ARR[1]=2
 ARR[2]=3

または

 ARR=(1 2 3)

添え字を指定して1つの要素を取得する

 echo ${ARR[0]}

全要素を取得する

 for a in ${ARR[@]}; do
   echo $a
 done

配列の大きさを取り出す

 size=${#ARR[@]}

ループの中で初期化する

 for i in 1 2 3; do
     n=${#ARR[@]}
     ARR[$n]=$i
 done

配列のpush(マージ)

 ARR1=(1 2 3)
 ARR2=(7 8 9)
 
 ARR1=(${ARR1[@]} ${ARR2[@]})
 ARR1=(${ARR1[@]} 0)
 
 echo "${ARR1[@]}" # => 1 2 3 7 8 9 0

連想配列

 USER_NAME=taro
 USER_AGE=20
 USER_SEX=man
 for key in NAME AGE SEX; do
     val=$(eval 'echo $USER_'$key)
     echo $val
 done
  • 「連想配列名_キー名」のようなルールで変数を作る。
  • ここでは連想配列名がUSER、キー名がNAME/AGE/SEX。
  • 連想配列の値の取得は以下のようにして行っている。
    • $()によるコマンド置換が行われる際に、$keyが展開されてNAMEやAGEのような文字列になる。
    • 次にevalが実行される際に、'echo $USER'は展開されてecho $USERという文字列になり、事前に展開されていたNAMEやAGEと文字列連結され、echo $USER_NAMEやecho $USER_AGEがevalの引数になる。
    • これでvalには$USER_NAMEや$USER_AGEの値が入る。

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS