Categories: shellscript

シェルスクリプトで配列を扱う方法について解説

シェルスクリプトは、簡単なタスクの自動化から複雑な処理まで幅広く対応できる強力なツールです。その中でも、配列を扱うことでデータの管理がより効率的になります。

本記事では、シェルスクリプトで配列を作成し、操作する方法について詳しく説明します。

配列の作成

シェルスクリプトでは、配列は非常にシンプルに定義できます。Bashを例に説明します。

一次元配列を作成するには、()を使います。例えば、以下のように定義できます。配列のインデックスは0から始まります。

#!/bin/bash

# 配列の定義
array=("one" "two" "three")

# 配列の要素にアクセス
echo ${array[0]}  # 出力: one
echo ${array[1]}  # 出力: two

配列のサイズを取得

配列のサイズを取得するには、${#array_name[@]}構文を使用します。

#!/bin/bash

array=("one" "two" "three")

# 配列のサイズを取得
size=${#array[@]}
echo "配列のサイズ: $size"  # 出力: 配列のサイズ: 3

配列への要素の追加と削除

要素の追加

配列に要素を追加するには、+=を使います。

#!/bin/bash

array=("one" "two" "three")

# 要素の追加
array+=("four")
echo ${array[@]}  # 出力: one two three four

要素の削除

要素を削除するには、unsetを使用します。

#!/bin/bash

array=("one" "two" "three")

# 要素の削除
unset array[1]
echo ${array[@]}  # 出力: one three
echo ${array[1]} 

ただし、削除後、配列のインデックスはそのままになります(削除されたところが詰められたりするわけではありません)。

そのため「echo ${array[1]}」でインデックス1の要素を表示しても、中身は空白となっており何も出力されません。

配列に対するループ処理

#!/bin/bash

array=("one" "two" "three")

# 配列のループ処理
for array in "${array[@]}"; do
    echo $array
done

配列の一部の情報を取得する方法

配列の一部を取得するには以下のようにします。

#!/bin/bash

array=("one" "two" "three" "four")

# 配列の一部の情報を取得
slice=("${array[@]:1:2}")  # インデックス1から2の要素を取得
echo ${slice[@]}  # 出力: two three

配列を結合する方法

二つの配列を、一つの配列に結合させることもできます。

#!/bin/bash

array1=("one" "two")
array2=("three" "four" "five")

# 配列の結合
combined=("${array1[@]}" "${array2[@]}")
echo ${combined[@]}  # 出力: one two three four five

まとめ

シェルスクリプトでの配列操作をマスターすることで、より高度なスクリプトを作成することができます。

シェルスクリプトの配列機能を駆使して、様々な自動化タスクを効率よく処理してみましょう!

Haruoka