shellスクリプトで配列を使う

配列の作成

hoge=(foo bar fuga)
# -> [foo, bar, fuga]を要素とする配列hogeが作成される

配列の参照

echo $hoge
# -> foo

echo ${hoge[0]}
# -> foo

echo ${hoge[@]}
# -> foo bar fuga

そのまま$hoge[0]みたいに書くと、ブラケットが分離されて$hoge[0]を表示するものと解釈されてしまうので、ブレースをつけないといけません。

また、添字を付けなかった場合、一つ目のように第一要素への参照と扱われてしまいます。全要素が欲しければ最後のように、添字に[@]を指定してあげます。

配列の長さの取得

echo ${#hoge[*]}
# -> 3

配列の長さを取得するには、配列名の前に#、添字に*をつけます。

配列の要素でループ

for entry in "${hoge[@]}"; do
  echo $entry
done
# -> "foo", "bar", "fuga"が順に表示される

ダブルクオーテーションをつけないと、もしhogeの要素にスペースを含む文字列があった場合、その要素が分割されてしまうので、ダブルクオーテーションをつける必要があるようです。

参考