前提
本記事は以下の記事について理解されていることを前提としてお話していきますのでよく分からない話が出た場合にはリンクの記事をご覧ください。
Linuxで利用できるシェルスクリプトの基礎知識と作成・実行方法
配列とは
配列とは複数の値を格納することができる変数のことです。通常の変数と同様に様々な文字列や数字を格納することができます。

上記の画像の通りdogという変数(箱)を定義してヨークシャーテリア(ぬいぐるみです)を格納します。
新たにほかの犬をこの変数dogに格納しようとするとそれまでしまっておいたヨークシャーテリアはどこかへ行ってしまいます。
要するに1つの変数が保持できる値は1つのみということです。
ですが、1つの箱に1つのものではなく、1つの箱に複数のものをしまって管理したい場合があります。
そんな時に利用できるのが配列です。
配列でdogsという箱を用意するとたくさんの犬(上記の画像を参照)をまとめてしまうことができるようになります。
後は使いたいときに『dogsという箱のパグ』というように個別に指定することで呼び出して利用することができます。
変数 ⇒ 1つの値を管理することができる
配列 ⇒ 複数の値を管理することができる
配列の作成・解説
シェルスクリプト(ShellScript)での配列を作成する書き方について紹介していきます。
配列の作成方法
配列の作成・・・dogsという配列を作成して3つの値を格納します。
dogs=('Shiba Inu' 'Corgi' 'Pug')
上記の例では文字列なので(’)シングルクォーテーションで囲っていますが、数字を格納する場合には必要ありません。
また各要素同士の間は半角スペースで区切ります。
・配列名、イコール、引数の間に半角スペースを入れることはできません
配列の要素とインデックス
配列を利用するには配列のインデックスと要素を理解する必要があります。ほかのプログラミング言語でも利用されているので理解しておきましょう。
配列の要素とは配列に格納した値のことを指します。先ほど作成した配列dogsを例にしてみていきましょう。
dogs=('Shiba Inu' 'Corgi' 'Pug')
配列dogsの中には3つの値が入っていることがわかります。この値のことを配列の要素と言います。
配列ではこの各要素をインデックスと呼ばれる通し番号を割り振って管理しています。
プログラミングの世界では数字は0から数えるという法則に従って、この配列の各要素に割り振られるインデックスは0から始まることになります。
つまり配列dogsに格納されている各要素のインデックスは以下の通りとなります。
Shiba Inu ⇒ インデックス 0
Corgi ⇒ インデックス 1
Pug ⇒ インデックス 2
作成した配列の利用方法
定義した配列にはさまざまな利用方法があります。それぞれの利用方法について解説していきます。
配列の利用方法
- 配列のインデックスを表示 ⇒ 0 1 2等
- 配列の要素の数を表示 ⇒ 3
- 配列の要素全てを表示 ⇒ Shiba Inu Corgi Pug
- 指定したインデックスの要素を表示 ⇒ インデックス2を指定 結果:Pug
使用例で利用するファイル
ファイル名:dog.sh
#! /bin/bash
dogs=('Shiba Inu' 'Corgi' 'Pug')
echo #この部分に記述していきます
exit 0
配列のインデックスを表示
配列のインデックスを表示させる使い方になります。
echo "${!配列名[@]}"
使用例
echo "${!dogs[@]}"
上記に書き換えてシェルスクリプトを実行します
出力結果
ubuntu@sample:~$ ./dog.sh
0 1 2
配列dogsのインデックスが表示されました。
配列の要素の数を表示
配列の要素の数を表示させます
echo "${#配列名[@]}"
使用例
echo "${#dogs[@]}"
上記に書き換えてシェルスクリプトを実行します
出力結果
ubuntu@sample:~$ ./dog.sh
3
配列dogsには3つの要素を格納しているので出力結果は3となりました。
配列の要素すべてを表示
配列に格納されている要素全てを表示させます
echo "${配列名[@]}"
使用例
echo "${dogs[@]}"
上記に書き換えてシェルスクリプトを実行します
出力結果
ubuntu@sample:~$ ./dog.sh
Shiba Inu Corgi Pug
配列dogsに格納されている要素をすべて表示させることができました
指定したインデックスの要素を表示
インデックスを指定して要素を表示させます。おそらく配列を利用する中で最も利用される方法となります。
echo "${配列名[インデックス]}"
使用例
echo "${dogs[1]}"
上記に書き換えてシェルスクリプトを実行します
出力結果
ubuntu@sample:~$ ./dog.sh
Corgi
インデックス番号1を指定したのでコーギーが出力されました
配列に要素を追加・削除する
配列の要素を追加・削除する方法について紹介していきます。
記述するファイル
#! /bin/bash
dogs=('Shiba Inu' 'Corgi' 'Pug')
echo "${dogs[@]}" #すべての要素を出力
exit 0
配列の要素を追加する
既存の配列に要素を追加したいというときの追加方法について解説していきます。
配列名[インデックス]='要素名'
使用例
既に定義してある配列dogsに要素を追加していきます。
#! /bin/bash
dogs=('Shiba Inu' 'Corgi' 'Pug')
echo "${dogs[@]}"
dogs[3]='Shih Tzu' #追加行 インデックス3にShih Tzuを追加
echo "${dogs[@]}" #追加行 すべての要素を出力
exit 0
配列dogsはすでに0~2の要素が格納されているため、今回はインデックスを3としています。
確認のためすべての要素を出力していきます
出力結果
ubuntu@sample:~$ ./dog.sh
①Shiba Inu Corgi Pug
②Shiba Inu Corgi Pug Shih Tzu
①要素追加前の配列dogsの全要素の出力結果です
②要素Shih Tzuを追加後の配列dogsの全要素の出力結果です
新しく要素を追加して値を出力することができました
配列の要素を削除する
配列の要素を削除する手順について解説していきます
unset 配列名[インデックス]
配列名・・・削除したい要素のある配列名を指定
インデックス・・・削除したい要素のインデックスを指定
使用例
既に定義してある配列dogsに要素を追加していきます。
#! /bin/bash
dogs=('Shiba Inu' 'Corgi' 'Pug')
echo "${dogs[@]}"
unset dogs[1] #追加行 Corgiを削除します
echo "${dogs[@]}" #追加行 削除後の配列の全要素を確認します
exit 0
出力結果
ubuntu@sample:~$ ./dog.sh
Shiba Inu Corgi Pug
Shiba Inu Pug
出力結果から指定したコーギーの要素が削除されていることがわかります



