配列の全要素をループで取得する
シェル書いてて、配列全要素を利用したいときに、まんまループの書き方が良くわからなかったのでメモ。
ARRAY=(aaa bbb ccc) for item in ${ARRAY[@]}; do echo $item done
これで、配列ARRAYの要素を全部出力できます。
なぜかというと、echo ${ARRAY[@]} するとわかります。
echo ${ARRAY[@]} #aaa bbb ccc
それがfor文で、下記のようになるので、要素が全部回せます。
for item in aaa bbb ccc; do echo $item done
ちなみに、{}をつけないと、配列の先頭要素+[@]という文字列扱いになってしまいます。
配列は名前だけだと先頭要素を表し、先に展開されるようで、[@]がただの文字列と解釈されるようです。
ARRAY=(aaa bbb ccc) echo $ARRAY[@] #aaa[@] echo ${ARRAY[@]} #aaa bbb ccc
Javaでいうと拡張for文と似た書き方です。
String[] array = { "aaa", "bbb", "ccc" }; for (String str : array) { System.out.println(str); }
他の言語を使うと、こういうちょっとしたところもぱっとわからなくて、やきもきします。