bash 配列の使い方について、初期化・参照・削除のやり方〜配列を使った繰り返し処理まで、最低限の知識を短いサンプルで理解できます!bash の配列を理解すると、シェルスクリプトの応用の幅が広がります。
bash 配列の使い方
bash 配列の初期化
配列は、代入で自動生成されます。「=」の前後に空白をいれてはいけません。
インデックスを指定して代入します。
$ my_array1[0]="name1" $ my_array1[2]="addr1" $ my_array1[1]="tel1"
先頭からいっぺんに代入します。
$ my_array2=("name2" "tel2" "addr2")
配列のインデックスは、0から始まります。
bash 配列の参照
配列に格納した値を参照するには、配列のインデックスを指定します。
${array[index]}
先頭データを参照する場合、インデックスに0を指定します。他のデータも、同様に、参照したい位置を指定します。
$ my_array2=("name2" "tel2" "addr2")
$ echo ${my_array2[0]}
name2
bash 配列の削除
配列の値の削除、配列全体の削除には、unsetを使います。
要素を指定した場合は、個々の要素を削除します。
$ my_array2=("name2" "tel2" "addr2")
$ unset my_array2[1]
$ echo ${my_array2[@]}
name2 addr2
インデックスを指定しない場合は、配列全体を削除します。
$ unset my_array2
$ echo ${#my_array2[@]}
0 # 配列 my_array2 要素の個数
bash 配列の要素の個数と要素の長さ
#は、長さです。
@は、配列の「全ての要素」を参照します。
つまり、配列に格納された要素数を調べるには、${#array[@]}となります。
$ my_array2=("name2" "tel2" "addr2")
$ echo ${#array[@]}
3
#は「長さ」なので、#array[index]要素を指定すると、要素の長さになります。
# 配列 my_array2 要素1の内容
$ echo ${my_array2[0]}
name2
# 配列 my_array2 要素1の長さ
$ echo ${#my_array2[0]}
5
bash 配列の全体参照 「@」 「*」
@と*は特別なインデックスです。配列の全ての要素を参照します。
ほとんど同じ働きをします。
$ echo ${#my_array2[@]}
4
$ echo ${#my_array2[*]}
4
しかし、「@」と「*」で違いが生じる場合があります。
配列の全体参照をダブルクォーテーションで囲んだ場合、[@]では1つずつのワードで分かれますが、[*]では全てが1つで管理されます。
「@」の場合、配列の要素が個別に扱われます。
my_array=("name" "tel" "addr")
for x in "${my_array[@]}"; do echo $x; done
name
tel
addr
「*」の場合、配列の要素が1つで扱われます。
my_array=("name" "tel" "addr")
for x in "${my_array[*]}"; do echo $x; done
name tel addr
bash 配列と繰り返し処理
配列は、繰り返し処理で用いられることが多い(for, whileなど)です。
例では、forのカウンターをインデックスとして配列に格納する処理です。
declare -i COUNT=0
for x in $(ls *)
do
if [ -x $x ]; then
files[$COUNT]=$x #配列に格納
fi
COUNT=COUNT+1
done
bash 配列を使う場合のバージョン
配列は、bash 2.0 以降の機能です。
古いバージョンを使っている場合は、最新版の利用を検討してみて下さい。
bashのバージョン確認
$ bash --version bash --version GNU bash, バージョン 4.3.11(1)-release (x86_64-pc-linux-gnu) Copyright (C) 2013 Free Software Foundation, Inc.
関連記事:シェルスクリプト bash 最新版の利用
bash 使いこなしのヒント
慣れてくると、「bash」で何でもやりたくなる。
でも、なんか、「使いこなしてる!」っていう実感もない・・・。
これは、そんなもやもやしたときに、ぴったりのbash本です。
幅広い話題についてふれる一方、意外と実用的な内容。脱初心者が目標です。
「bash」の本は、「コマンド辞典」以外にも1冊は持っておきたいもの。
かと言って、シェルスクリプトオンリーの本が欲しいわけでもなかったりする。
そんなときに読む、「bashが使えるようになる本」、それがコレ!
コンピュータ関連は、どうしてもオライリー本を買ってしまいがちですが、これもよく読んだ本の1冊。今回の「配列」の説明はページ数こそ多くはいないけど、簡潔に書かれていて理解しやすいです。
関連記事1







関連記事2









![バイオインフォ 道場 [bioinfo-Dojo]](https://bioinfo-dojo.net/wp-content/uploads/2016/03/some_object_luca-bravo-alS7ewQ41M8-unsplash.jpg)


コメント
[…] 配列の使い方/サンプルでわかる最低限の知識 | バイオインフォ 道場 […]