Linux Bash で配列を使用する

Yahya Irmak 2022年3月24日
Linux Bash で配列を使用する

Bash には配列構造があります(一部の言語ではリストと呼ばれます)。この記事では、この構造について説明します。後で、Bash スクリプトで次のトピックを調べます。

  • 配列宣言
  • 配列内の値にアクセスします
  • 配列に新しい値を追加します
  • 配列から値を削除します

配列は、類似したデータをまとめて保持するデータ構造です。配列内の各データにはインデックスがあり、最初の要素のインデックスは 0 です。これらのデータには、ループを使用して順次アクセスすることも、データインデックスを使用して個別にアクセスすることもできます。配列を変更したり、新しい値を追加したり、既存の値を削除したりすることもできます。

Bash での配列の使用

配列とは何かがわかったので、Bash での使用を調べることができます。

配列を宣言する

配列は、値を括弧で囲むことによって宣言されます。値の間にはスペースのみがあり、コンマなどの文字はありません。配列宣言の例を以下に示します。

arr=("black" "white" "red" "blue" "green")

次のメソッドを使用して、整数値の配列を宣言できます。

intArr=(1 2 3 4)
intArr=($(seq 1 4))
intArr=({1..4}) 

これらの例は、1 から 4 の数字を含む配列を宣言しています。

アレイにアクセスする

配列内のデータにアクセスするには、さまざまな方法があります。たとえば、配列全体を出力したり、インデックスを使用して 1つの要素にアクセスしたり、ループを使用して各要素に順番にアクセスしたりできます。それぞれの方法を一つ一つ説明していきましょう。

アレイ全体にアクセスする

[*] または [@] コマンドを使用して、配列が保持するすべての値にアクセスできます。たとえば、これらのコマンドを使用して、上記で定義した arr 配列のすべての値を出力してみましょう。

arr=("black" "white" "red" "blue" "green")
echo "With *: ${arr[*]}"
echo "With @: ${arr[@]}"

アレイ全体にアクセスする

インデックス付きの要素にアクセスする

配列の最初の要素のインデックスは 0 であり、次の要素のインデックスは順番に増加します。配列内の要素のインデックス番号で要素にアクセスできます。たとえば、以下の Bash コードを使用して、arr 配列の red 値を取得します。

arr=("black" "white" "red" "blue" "green")
echo "${arr[2]}"

インデックスを使用して要素にアクセスします

ループで配列要素にアクセスする

for ループを使用して、配列のすべての要素に 1つずつアクセスできます。以下は、arr 配列の各色を画面に出力する Bash スクリプトです。

arr=("black" "white" "red" "blue" "green")
for color in ${arr[@]}; do
  echo $color
done

ループで要素にアクセスする

インデックス番号と一緒にこれらの値にアクセスしたい場合は、以下のコードを使用できます。

arr=("black" "white" "red" "blue" "green")
for i in ${!arr[@]}; do
  echo "$i: ${arr[$i]}"
done

${!arr[@]} コマンドは、配列内のすべての値のインデックスを返します。次に、これらのインデックスを使用して要素にアクセスします。

ループで番号付き要素にアクセスする

配列に新しい要素を追加する

配列に新しい要素を追加するには、新しい値にインデックス番号を割り当てるか、+= 演算子を使用します。

arr=("black" "white" "red" "blue" "green")
echo "Before adding purple: ${arr[@]}"
arr[5]="purple" # or use arr+=("purple"), exactly same
echo "After adding purple: ${arr[@]}"

配列に要素を追加します

配列から要素を削除する

unset コマンドを使用して、アレイ内のデータを削除したり、アレイ自体を完全に削除したりすることもできます。

arr=("black" "white" "red" "blue" "green")
echo "Before removing white: ${arr[@]}"
unset arr[1]
echo "After removing white: ${arr[@]}"

配列から要素を削除します

著者: Yahya Irmak
Yahya Irmak avatar Yahya Irmak avatar

Yahya Irmak has experience in full stack technologies such as Java, Spring Boot, JavaScript, CSS, HTML.

LinkedIn

関連記事 - Bash Array