【Linux】シェルスクリプトの配列の定義と使い方

Linux

前提

本記事は以下の記事について理解されていることを前提としてお話していきますのでよく分からない話が出た場合にはリンクの記事をご覧ください。

Linuxで利用できるシェルスクリプトの基礎知識と作成・実行方法

【Linux】シェルスクリプトの変数の定義と使い方

配列とは

配列とは複数の値を格納することができる変数のことです。通常の変数と同様に様々な文字列や数字を格納することができます。

上記の画像の通りdogという変数(箱)を定義してヨークシャーテリア(ぬいぐるみです)を格納します。

新たにほかの犬をこの変数dogに格納しようとするとそれまでしまっておいたヨークシャーテリアはどこかへ行ってしまいます。

要するに1つの変数が保持できる値は1つのみということです。

ですが、1つの箱に1つのものではなく、1つの箱に複数のものをしまって管理したい場合があります。

そんな時に利用できるのが配列です。

配列でdogsという箱を用意するとたくさんの犬(上記の画像を参照)をまとめてしまうことができるようになります。

後は使いたいときに『dogsという箱のパグ』というように個別に指定することで呼び出して利用することができます。

Check!

変数 ⇒ 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

作成した配列の利用方法

定義した配列にはさまざまな利用方法があります。それぞれの利用方法について解説していきます。

配列の利用方法

  1. 配列のインデックスを表示 ⇒ 0 1 2等
  2. 配列の要素の数を表示 ⇒ 3
  3. 配列の要素全てを表示 ⇒ Shiba Inu Corgi Pug
  4. 指定したインデックスの要素を表示 ⇒ インデックス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

出力結果から指定したコーギーの要素が削除されていることがわかります

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