はじめに
シェルスクリプトをゴリゴリ書く機会はそれほど多くないので、シェルスクリプトで配列を作る方法を備忘録としてサクッとまとめてみました。
シェルスクリプトで配列を操作する方法も併記しているので、この記事を読んだ方にチートシートとして使って頂けると幸いです。
要素を1つずつ追加して配列を作る
-
変数名[要素番号]
とすることで、配列を作ることができます。 - 添え字の番号は0からスタートしなくても正常に動作します。
- いきなり
array[3]=8
としても、ArrayIndexOutOfBoundsException的なエラーになりません。 -
${配列名[@]}
と入力すると、配列の中身を一括して参照できます。
[root@kumotori ~]# array[0]=0
[root@kumotori ~]# array[1]=2
[root@kumotori ~]# array[2]=4
[root@kumotori ~]# array[3]=8
[root@kumotori ~]# array[4]=16
[root@kumotori ~]# echo ${array[@]}
0 2 4 8 16
初期値を指定して配列を作る
- 丸カッコ内に半角スペース区切りで値を入力することで、簡単に配列を生成することができます。
- 私は静的に配列を作ることが多いので、この方法で配列を生成することが多いです。
-
${配列名[@]}
をfor文に渡すと、配列の中身を一つずつ取得して処理できます。 - Javaの拡張for文と似た構文でスッキリしているので、添え字が要らない時はこの書き方が良さそう。
array1.sh
# !/bin/bash
langs=("c#" "java" "sql" "ruby")
for lang in ${langs[@]}; do
echo $lang
done
array1.shの実行結果
[root@kumotori scripts]# ./array1.sh
c#
java
sql
ruby
ブレース展開を利用して配列を作る
-
{始まりの数..終わりの数}
とすることで、開始値と終了値を指定して配列を作ることができます。 - この方法はブレース展開と呼ばれますが、中カッコ(brace)で囲まれていることが名前の由来だと思います。
array2.sh
# !/bin/bash
for i in {1..5}; do
echo "${i}番目"
done
array2.shの実行結果
[root@kumotori scripts]# ./array2.sh
1番目
2番目
3番目
4番目
5番目