LoginSignup
21
7

More than 5 years have passed since last update.

シェルスクリプトで配列を作る方法

Last updated at Posted at 2019-03-14

はじめに

シェルスクリプトをゴリゴリ書く機会はそれほど多くないので、シェルスクリプトで配列を作る方法を備忘録としてサクッとまとめてみました。

シェルスクリプトで配列を操作する方法も併記しているので、この記事を読んだ方にチートシートとして使って頂けると幸いです。

要素を1つずつ追加して配列を作る

  • 変数名[要素番号]とすることで、配列を作ることができます。
  • 添え字の番号は0からスタートしなくても正常に動作します。
    • いきなりarray[3]=8としても、ArrayIndexOutOfBoundsException的なエラーになりません。
  • ${配列名[@]}と入力すると、配列の中身を一括して参照できます。
[root@kumotori ~]# array[0]=0
[root@kumotori ~]# array[1]=2
[root@kumotori ~]# array[2]=4
[root@kumotori ~]# array[3]=8
[root@kumotori ~]# array[4]=16
[root@kumotori ~]# echo ${array[@]}
0 2 4 8 16

初期値を指定して配列を作る

  • 丸カッコ内に半角スペース区切りで値を入力することで、簡単に配列を生成することができます。
  • 私は静的に配列を作ることが多いので、この方法で配列を生成することが多いです。
  • ${配列名[@]}をfor文に渡すと、配列の中身を一つずつ取得して処理できます。
    • Javaの拡張for文と似た構文でスッキリしているので、添え字が要らない時はこの書き方が良さそう。
array1.sh
#!/bin/bash

langs=("c#" "java" "sql" "ruby")

for lang in ${langs[@]}; do
  echo $lang
done
array1.shの実行結果
[root@kumotori scripts]# ./array1.sh 
c#
java
sql
ruby

ブレース展開を利用して配列を作る

  • {始まりの数..終わりの数}とすることで、開始値と終了値を指定して配列を作ることができます。
  • この方法はブレース展開と呼ばれますが、中カッコ(brace)で囲まれていることが名前の由来だと思います。
array2.sh
#!/bin/bash

for i in {1..5}; do
  echo "${i}番目"
done
array2.shの実行結果
[root@kumotori scripts]# ./array2.sh 
1番目
2番目
3番目
4番目
5番目
21
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
7