Bashで覚えておくとよいデータ構造 - 配列
Bashで必要なデータ構造の覚書です。
配列
配列は複数件のデータを扱うためのデータ構造です。
■配列を生成する。
配列の生成は以下のように行います。
配列の名前=() 配列の名前=("データ" "データ" "データ")
配列の生成では、配列の名前を指定します。
もし、生成時にデータを格納する場合に、()内にデータを指定します。
例えば、空の配列ARRAY1を生成するには、以下のように書きます。
ARRAY1=()
例をもう一つ。データを3つ格納した配列ARRAY2を生成するには、以下のように書きます。
ARRAY2=("history" "japanese" "math")
■配列にデータを追加する。
配列へのデータの追加は以下のように行います。
配列の名前=("${配列の名前[@]}" "データ")
データの追加では、配列の名前とデータを指定します。
追加するたびに、データは配列の末尾に追加され、配列のサイズが増えます。
例えば、配列ARRAY1にデータを追加するには、以下のように書きます。
ARRAY1=("${ARRAY1[@]}" "give") ARRAY1=("${ARRAY1[@]}" "gave") ARRAY1=("${ARRAY1[@]}" "given")
■配列にデータを格納する。
配列の特定の位置へのデータの格納は以下のように行います。
配列の名前[インデックス]="データ"
データの格納では、配列の名前とインデックスと格納するデータを指定します。
インデックスとは配列の位置を表す数字で、「0」以上の値を指定する必要があります。
例えば、配列ARRAY2へデータを格納するには、以下のように書きます。
ARRAY2[3]="english" ARRAY2[4]="science"
■配列からデータを取得する。
配列からのデータの取得は以下のように行います。
コマンド ${配列の名前[インデックス]} 変数=${配列の名前[インデックス]}
データの取得では、配列の名前とインデックスを指定します。インデックスの考え方はデータの格納時と同様です。
配列から取得したデータは、関数の引数に渡したり、変数に代入したり、関数の戻り値として返したりできます。
例えば、配列ARRAY1のデータを取得して出力するには、以下のように書きます。
echo ${ARRAY1[0]} => give echo ${ARRAY1[1]} => gave echo ${ARRAY1[2]} => given
■配列中のすべてのデータに同じ処理をする。
配列中のすべてのデータに同じ処理をするためには、以下のようなfor文を使用します。
for (( I = 0; I < ${#配列の名前[@]}; ++I )) do // ${配列の名前[$I]}を使った処理 done
このfor文中の『${#配列の名前[@]}』は配列のサイズを表します。そのため、このfor文を使えば配列中のすべてのデータに同じ処理を行えます。
例えば、配列ARRAY2中のすべてのデータを表示するには、以下のように書きます。
for (( I = 0; I < ${#ARRAY2[@]}; ++I )) do echo ${ARRAY2[$I]} done
これは以下のように書いた場合と同じ結果になります。
echo ${ARRAY2[0]} => history echo ${ARRAY2[1]} => japanese echo ${ARRAY2[2]} => math echo ${ARRAY2[3]} => english echo ${ARRAY2[4]} => science
データ構造
アルゴリズム
- Javaを使うなら理解しておきたいアルゴリズム - 抽出・ソート・結合・集計 (リスト&マップ編)
- Javaを使うなら理解しておきたいアルゴリズム - 抽出・ソート・結合・集計 (リスト&ビーン編)
- PHPを使うなら理解しておきたいアルゴリズム - 抽出・ソート・結合・集計
- VBAを使うなら理解しておきたいアルゴリズム - 抽出・結合・集計
- Javascriptを使うなら理解しておきたいアルゴリズム - 抽出・ソート・結合・集計
- SQLを使うなら理解しておきたいアルゴリズム?(というか、select文の書き方) - where・order by・join・group by
- Bashを使うなら理解しておきたいアルゴリズム - 抽出・ソート・結合・集計