導入
シェルスクリプトで配列を扱う方法を知っておくと、大規模なデータセットを非常に効率的に処理できるようになります。では、配列とは何でしょうか?そして、配列はどのように作成するのでしょうか?さあ、見ていきましょう。.
配列とは何ですか?
プログラミング言語の基礎を既に理解している方なら、配列とは何かご存知でしょう。しかし、配列に馴染みのない方のために、配列の基本と使い方を学びましょう。.
変数は単一のデータ要素を格納します。一方、配列はほぼ無制限の数のデータ要素を格納できます。大量のデータを扱う場合、変数は非常に非効率になる可能性があるため、配列の使用は非常に便利です。.
シェル スクリプトで配列を作成する方法を学びましょう。.
シェルスクリプトで配列を作成する
シェル スクリプトで使用できる配列には 2 つの種類があります。.
- インデックス配列 – 0から始まるインデックスで要素を格納します
- 連想配列 – 要素をキーと値のペアで保存する
デフォルトで作成される配列はインデックス配列です。インデックス名を指定すると連想配列となり、要素には数値ではなくインデックス名でアクセスできます。.
配列の宣言:
root@ubuntu:~# declare -A assoc_array
root@ubuntu:~# assoc_array[key]=value
OR
root@ubuntu:~# declare -a indexed_array
root@ubuntu:~# indexed_array[0]=value大文字と小文字のaに注意してください。大文字のAは連想配列を宣言するために使用され、小文字のaはインデックス配列を宣言するために使用されます。.
declareキーワードは配列を明示的に宣言するために使用されますが、必ずしも使用する必要はありません。配列を作成する際には、明示的に宣言することなく、必要な配列の型に基づいて値を初期化するだけで済みます。.
シェルスクリプトで配列を操作する
配列の作成方法がわかったので、次は配列の操作方法を学びましょう。配列はデータ要素の集合体なので、ループと配列を同時に使用して必要なデータポイントを抽出できます。.
1. 配列要素に個別にアクセスする
各データ ポイントは個別にインデックス付けされていることがわかっているので、以下に示すように配列インデックスを指定して配列のすべての要素にアクセスできます。
assoc_array[element1]="Hello World"
echo ${assoc_array[element1]}同様に、インデックス付き配列の要素にアクセスしてみましょう。インデックスは各要素ごとに自動的に生成されるため、インデックス付き配列のすべての要素をスペースで区切って指定できます。.
index_array=(1 2 3 4 5 6)
echo ${index_array[0]}ご覧のとおり、最初の要素はインデックス 0 に自動的に印刷されます。.
2. 配列要素を順番に読み取る
ループについて既にご存知であれば、これは簡単です。そうでない場合は、今後のチュートリアルで説明します。シェルスクリプトでは、配列要素を操作するためにwhileループまたはforループを使用します。以下のスクリプトをコピーして、次の名前で保存します。 .shを保存
#!/bin/bash
index_array=(1 2 3 4 5 6 7 8 9 0)
for i in ${index_array[@]}
do
echo $i
done上記のスクリプトの出力は次のようになります。
おそらく、index_array[@] に気づいたと思いますが、@ 記号の目的が何なのか疑問に思われるかもしれませんので、ここでその点について説明します。.
シェルスクリプトの配列に対する組み込み操作
要素に個別にアクセスして for ループを使用する方法を学習したので、配列に対してデフォルトで使用できるさまざまな操作を学習しましょう。.
1. 配列のすべての要素にアクセスする
インデックスまたは配列キーを指定して要素にアクセスする方法を学びました。しかし、すべての要素を一度に出力したり、すべての要素を操作したりしたい場合は、[@] 記号という別の演算子を使用できます。.
上記の例で気づいたように、 for ループを使用して配列のすべての要素をループしたいときにこのシンボルを使用しました。.
echo ${assoc_array[@]}上記は、assoc 配列に格納されているすべての要素を出力します。.
2. 配列内の要素数を数える
上記の @ 記号と同様に、配列名の前に # という記号を付けることで、配列に格納されている要素数を取得できます。どのように機能するか見てみましょう。.
echo ${#index_array[@]}特定の要素に使用されている文字数をカウントしたい場合は、@ 記号をインデックスに置き換えるだけです。.
3. 配列の個々の要素を削除する
配列の要素を追加し、それを出力する方法は既にご存知でしょう。次は、特定の要素を削除する方法を学びましょう。そのためには、unsetキーワードを使用します。.
unset index_array[1]上記のコード例で配列名とインデックスIDを置き換えると、必要な配列要素を削除できます。とても簡単ですよね?
結果
シェルスクリプトは非常に拡張性が高く、適切なスクリプト作成者であれば、ターミナルで実行できるあらゆる機能を置き換えることができます。シェルスクリプトにおける配列の追加機能には、正規表現(regex)の使用も含まれます。シェルスクリプトでは、様々な正規表現を使用して配列要素を操作できます。.
ここまでで、配列の作成と操作について十分に理解し、スクリプトで配列を使えるようになったかと思います。ご意見・ご感想は、下のコメント欄にご記入ください。また、このトピックについてご質問があればお知らせください。.












