Shellにおける、配列の基本的な使い方を解説します。
配列の作成
新しく配列を作成する方法を説明します。
書式1
空の配列の新規作成、値を代入しつつ配列を作成する書式です。
値を複数代入する際の区切り文字は、半角スペースを使用します。
配列名=() 配列名=(値1 値2 値3 ...)
サンプル1
空の配列の新規作成、値の代入、配列の内容を確認するサンプルです。
#!/bin/bash array=() array=("りんご" "メロン" "ぶどう") echo ${array[@]}
サンプルの実行結果です。
[root@STKWPS001 ws]# sh sample.sh りんご メロン ぶどう
書式2
明示的に配列を宣言する書式です。
declare -a 配列名=(値1 値2 値3 ...)
サンプル2
明示的な配列の宣言、配列の内容を確認するサンプルです。
#!/bin/bash declare -a array=("りんご" "メロン" "ぶどう") echo ${array[@]}
サンプルの実行結果です。
[root@STKWPS001 ws]# sh sample.sh りんご メロン ぶどう
書式3
要素に値を代入しつつ、配列を作成する書式です。
配列名[インデックス]=値
サンプル3
要素に値を代入しつつ、配列を作成し、配列の内容を確認するサンプルです。
配列のインデックスは「0」から始まります。
#!/bin/bash array[0]="りんご" array[1]="メロン" array[2]="ぶどう" echo ${array[@]}
サンプルの実行結果です。
[root@STKWPS001 ws]# sh sample.sh りんご メロン ぶどう
配列にある特定の値の参照
配列内にある特定の値を参照する方法を説明します。
書式
echo ${配列名[インデックス]}
サンプル
配列の1つ目と3つ目の要素を参照するサンプルです。
配列のインデックスは「0」から始まるため、
1つ目の要素のインデックスは「0」、
3つ目の要素のインデックスは「2」となります。
#!/bin/bash array=("りんご" "メロン" "ぶどう") echo ${array} echo ${array[0]} echo ${array[2]}
サンプルの実行結果です。
インデックスを省略した場合は、1つ目の要素(インデックスが「0」)が取得されます。
[root@STKWPS001 ws]# sh sample.sh りんご りんご ぶどう
配列にある全ての値の参照
配列内にある全ての値を参照する方法を説明します。
書式
echo ${配列名[@]}
または、
echo ${配列名[*]}
サンプル
配列にある全ての値を参照するサンプルです。
#!/bin/bash array=("りんご" "メロン" "ぶどう") echo ${array[@]}
サンプルの実行結果です。
配列内の要素が半角スペース区切りで表示されます。
[root@STKWPS001 ws]# sh sample.sh りんご メロン ぶどう
配列にある要素の変更
配列にある要素の値を変更する方法を説明します。
書式
配列名[インデックス]=値
サンプル
2つ目の要素の値「メロン」を「桃」に変更するサンプルです。
#!/bin/bash array=("りんご" "メロン" "ぶどう") echo 変更前:${array[@]} array[1]="桃" echo 変更後:${array[@]}
サンプルの実行結果です。
[root@STKWPS001 ws]# sh sample.sh 変更前:りんご メロン ぶどう 変更後:りんご 桃 ぶどう
配列への要素の追加
配列に要素を追加する方法を説明します。
書式
配列名+=(値)
サンプル
4つ目の要素として「レモン」を追加するサンプルです。
#!/bin/bash array=("りんご" "メロン" "ぶどう") array+=("レモン") echo ${array[@]}
サンプルの実行結果です。
[root@STKWPS001 ws]# sh sample.sh りんご メロン ぶどう レモン
配列への複数の要素を追加
配列に複数の要素を追加する方法を説明します。
書式
配列名+=(値 値 値 ...)
サンプル
4つ目の要素として「レモン」、5つ目の要素として「桃」を追加するサンプルです。
#!/bin/bash array=("りんご" "メロン" "ぶどう") array+=("レモン" "桃") echo ${array[@]} echo ${array[*]}
サンプルの実行結果です。
[root@STKWPS001 ws]# sh sample.sh りんご メロン ぶどう レモン 桃 りんご メロン ぶどう レモン 桃
配列にある特定の要素の削除
配列にある特定の要素を削除する方法を説明します。
書式
unset 配列名[インデックス]
サンプル
2つ目の要素(インデックスは「1」)を削除するサンプルです。
#!/bin/bash array=("りんご" "メロン" "ぶどう") unset array[1] echo ${array[@]}
サンプルの実行結果です。
[root@STKWPS001 ws]# sh sample.sh りんご ぶどう
配列にある全ての要素の削除
配列にある全ての要素を削除する方法を説明します。
書式
unset 配列名[@]
または、
unset 配列名
サンプル
配列の全ての要素を削除するサンプルです。
#!/bin/bash array=("りんご" "メロン" "ぶどう") unset array echo ${array[@]}
サンプルの実行結果です。
要素が存在しないため、何も表示されません。
[root@STKWPS001 ws]# sh sample.sh
配列の要素数の取得
配列の要素数を取得する方法を説明します。
書式
echo ${#配列名[@]}
または、
echo ${#配列名[*]}
サンプル
配列の要素数を取得するサンプルです。
#!/bin/bash array=("りんご" "メロン" "ぶどう") array+=("レモン" "桃") echo ${#array[@]} echo ${#array[*]}
サンプルの実行結果です。
[root@STKWPS001 ws]# sh sample.sh 5 5
配列にある要素の長さの取得
配列内の要素の長さ(文字数)を取得する方法を説明します。
書式
echo ${#配列名[インデックス]}
サンプル
配列にある各要素の長さ(文字数)を取得するサンプルです。
#!/bin/bash array=("abc" "123" "あいう") echo ${#array[0]} echo ${#array[1]} echo ${#array[2]}
サンプルの実行結果です。
1バイト文字、2バイト文字に関わらず、1文字として文字数が取得されます。
[root@STKWPS001 ws]# sh sample.sh 3 3 3
応用編
配列を応用的に使用する方法をまとめました。
コメント