Bash シェルスクリプト内で配列を扱う方法です。
配列を作成する
下記の例では、配列変数 arr
に 3 つの要素を格納しています。
インデックスを指定して1つずつ代入していく方法
arr[0]=AAA
arr[1]=100
arr[2]='Hello world'
echo ${arr[0]}
echo ${arr[1]}
echo ${arr[2]}
AAA
100
Hello world
配列の初期化時に要素をまとめて指定する方法
arr=(AAA BBB CCC)
echo ${arr[0]}
echo ${arr[1]}
echo ${arr[2]}
AAA
BBB
CCC
以下のように、複数行にまたいで値を記述することもできます。
arr=(
AAA
BBB
CCC
)
配列をループ処理する
下記の例では、3 つの要素を持つ配列変数 arr
を定義し、各要素をループで 1 つずつ処理しています。
配列要素の値にスペースが含まれる場合、下記の "CCC DDD"
のようにダブルクォートで囲む必要があります。
arr=(AAA BBB "CCC DDD")
for x in "${arr[@]}"; do
echo "$x"
done
AAA
BBB
CCC DDD
ちなみに、上記のコードは、以下のようにすれば配列変数を定義しないで書けます。
for x in AAA BBB "CCC DDD"; do
echo "$x"
done
配列のサイズ(要素数)を調べる
Bash で定義した配列変数のサイズを調べるには下記のようにします。
ここでは、配列変数 arr
を定義して、そのサイズを調べています。
arr=(100 200 300)
echo ${#arr[*]}
3
配列に要素を追加する
Bash の配列変数に要素を追加するには下記のようにします。
arr=(100 200 300)
arr=("${arr[@]}" XXX YYY ZZZ)
echo ${arr[@]}
100 200 300 XXX YYY ZZZ
同様にして、配列の先頭に要素を追加できます。
arr=(100 200 300)
arr=(XXX YYY ZZZ "${arr[@]}")
echo ${arr[@]}
XXX YYY ZZZ 100 200 300
配列と配列を結合する
Bash の複数の配列を結合して、新しい配列を作成するには下記のようにします。
arr1=(100 200 300)
arr2=(400 500 600)
new_arr=("${arr1[@]} ${arr2[@]}")
echo "${new_arr[@]}"
100 200 300 400 500 600
同様にして、3 つ以上の配列を結合することもできます。
arr1=(100 200 300)
arr2=(400 500 600)
arr3=(700 800 900)
new_arr=("${arr1[@]} ${arr2[@]} ${arr3[@]}")
echo "${new_arr[@]}"
100 200 300 400 500 600 700 800 900