めもめも のーと

ハマったこととか、覚えたこととか

bashで配列の扱い方

bashのshellスクリプトで配列の定義方法と取り出し方についてメモ。

下記のコードで確認します。

#!/bin/bash

declare -A FRUITS;
FRUITS=(["apple"]="100" ["banana"]="120" ["orange"]="150");
for f in ${FRUITS[@]}; do
  echo ${f};
done

declare -a ANIMAL;
ANIMAL=("dog" "cat" "bird");
for a in ${ANIMAL[@]}; do
  echo ${a};
done

実行結果

150
100
120
dog
cat
bird

解説

配列の定義

declare は変数の宣言をするコマンドです。オプションには主に下記があります。

option 意味
-a 配列として定義
-A 連想配列として定義
-i 整数型として定義
-r 参照のみ可能な変数として定義

今回は連想配列と配列について確認しました。 例では変数FRUITSとANIMALを定義し、それぞれ連想配列と配列として扱います。

配列からデータの取り出し方

for文を使って配列からデータを取り出します。 取り出し方はどちらも同じですが、連想配列の場合、以下のようにするとkeyの値が取れます。

declare -A FRUITS;
FRUITS=(["apple"]="100" ["banana"]="120" ["orange"]="150");
for f in ${!FRUITS[@]}; do    # <- ! (エクスクラメーションマーク)を付ける
  echo ${f};
done

# 結果
orange
apple
banana