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
応用編
配列を応用的に使用する方法をまとめました。






コメント