【bashシェル】配列の基本的な使い方


この記事はプロモーションを含みます。

bashシェル

ホーム > bashシェルスクリプト リファレンス

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[@]}

要素に値を代入する際は「=」の前後に空白を含めてはいけません。
以下のようなエラーが発生します。

sample.sh: 行 3: array[0]: コマンドが見つかりません

サンプルの実行結果です。

[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

応用編

配列を応用的に使用する方法をまとめました。

配列を元にループ処理を行う

配列におけるアスタリスクとアットマークの違い

配列の要素を削除する時の注意

コメント

タイトルとURLをコピーしました