Skip to content

配列#

shell script、特にbashにおける配列について説明します。

配列の宣言

bashでの配列は以下のように宣言します:

array=("value1" "value2" "value3")

値の取得

配列の要素にアクセスするには、次のようにインデックスを使用します:

echo "${array[0]}"  # value1

全要素の取得

echo "${array[@]}"  # value1 value2 value3

配列の長さの取得

length=${#array[@]}
echo "$length"  # 3

要素の追加

array+=("value4")

要素の削除

unset array[1]  # value2を削除

配列のスライス

指定した範囲の要素を取得するには:

echo "${array[@]:1:2}"  # value2 value3

この例では、インデックス1から2つの要素を取得します。

ループ処理

配列のすべての要素に対してループ処理を行うには、次のようにします:

for val in "${array[@]}"; do
    echo "$val"
done

これがbashの配列に関する基本的な説明です。

詳細#

了解しました。bashにおける配列について、もう少し詳しく説明いたします。

  1. 連想配列
    bash 4以降では、連想配列もサポートしています。これはキーと値のペアを持つ配列です。 宣言:

    declare -A assoc_array
    
    要素の追加:
    assoc_array["key1"]="value1"
    assoc_array["key2"]="value2"
    
    値の取得:
    echo "${assoc_array["key1"]}"  # value1
    
    すべてのキーの取得:
    echo "${!assoc_array[@]}"
    

  2. 配列の要素の操作

    • 要素の置換

      array=("apple" "banana" "cherry")
      array[1]="blueberry"
      echo "${array[@]}"  # apple blueberry cherry
      

    • 末尾から要素を取得

      echo "${array[@]: -1}"  # cherry
      

  3. 文字列を配列に分割
    以下のコマンドは、スペースを区切り文字として文字列を配列に変換します。

    string="a b c d"
    array=($string)
    echo "${array[2]}"  # c
    

  4. 配列要素の検索
    配列の中で特定の文字列を含む要素を検索することもできます。

    array=("apple" "banana" "cherry")
    for fruit in "${array[@]}"; do
        if [[ $fruit == *"a"* ]]; then
            echo "$fruit contains an 'a'"
        fi
    done
    

  5. 配列の要素の順序を逆にする

    array=("a" "b" "c" "d")
    reversed_array=("${array[@]}" | tac -s ' ')
    echo "${reversed_array[@]}"  # d c b a
    

bashにおける配列は非常に柔軟で、多様な操作が可能です。もちろん、上記に挙げたものは一部の例に過ぎません。