- 追加された行はこの色です。
- 削除された行はこの色です。
* 配列(連想配列) [#gac5d133]
** 配列(bash) [#y31d6291]
*** 初期化する [#s909ac85]
*** 初期化 [#s909ac85]
ARR[0]=1
ARR[1]=2
ARR[2]=3
または
ARR=(1 2 3)
*** 添え字を指定して取り出す [#l7dd2f4f]
*** 添え字を指定して1つの要素を取得する [#l7dd2f4f]
echo ${ARR[0]}
*** $ARR[@]で全部取り出す [#cd2ee597]
*** 全要素を取得する [#cd2ee597]
for a in ${ARR[@]}; do
echo $a
done
*** 配列の大きさを取り出す [#x852e8cb]
size=${#ARR[@]}
*** ループの中で初期化する [#xc998351]
for i in 1 2 3; do
n=${#ARR[@]}
ARR[$n]=$i
done
*** 配列のpush(マージ) [#q052ccfd]
ARR1=(1 2 3)
ARR2=(7 8 9)
ARR1=(${ARR1[@]} ${ARR2[@]})
ARR1=(${ARR1[@]} 0)
echo "${ARR1[@]}" # => 1 2 3 7 8 9 0
** 連想配列 [#yc746620]
- 「連想配列名_キー名」のようなルールで変数を作る。
- 「echo $user_」部分をエスケープして、$iを展開した後にevalする。
user_name=taro
user_age=20
user_sex=man
for i in name age sex; do
val=`eval 'echo $user_'$i`
echo $val
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の値が入る。