シェルスクリプトにおける配列
シェルスクリプトで配列を扱う方法を知っていると、より効率的に大きなデータセットを扱うことができます。しかし、配列とは何か、どのように作成するのでしょうか?さあ、調べてみましょう!
配列とは何ですか?
プログラミング言語の基礎知識があるなら、配列の概念はわかるでしょう。しかし、初心者のために、配列の基礎を復習し、どのように扱えるか学んでみましょう。
変数は単一のデータ要素を格納します。一方、配列は事実上無限のデータ要素を格納することができます。大量のデータを扱う場合、変数は非効率なことがあり、配列を使うことは非常に役立ちます。
シェルスクリプトで配列を作成する方法を学びましょう。
シェルスクリプトでの配列の作成
シェルスクリプトでは、私たちが扱える配列には2つのタイプがあります。
- Indexed Arrays – Store elements with an index starting from 0
- Associative Arrays – Store elements in key-value pairs
作成されるデフォルト配列は、インデックス配列です。インデックス名を指定すると、連想配列になり、要素には数字の代わりにインデックス名を使ってアクセスできます。
配列の宣言:
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. 順番に配列の要素を読む
もしもあなたがすでにforループを知っているなら、この課題は簡単に達成できるでしょう。もし知らないなら、後のチュートリアルでそれについて学びます。このスクリプトでは、シェルスクリプトの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を置き換えれば、希望する配列要素を削除することができます。非常に簡単ですね。
結論
シェルスクリプトは非常に広範であり、適切な人がスクリプトを作成すればターミナルで実行できるあらゆる機能を置き換えることができます。シェルスクリプトの配列の追加機能には、正規表現を使った操作も含まれます。シェルスクリプト内で配列要素を操作するために、さまざまな正規表現を使用することができます。
現時点では、配列の作成と使用方法について十分理解していただけることを望んでいます。スクリプトで配列を活用できるようになることを願っています。お考えやこのトピックに関する質問がある場合は、以下にコメントしてください。