Итерация многомерных массивов в Bash: методы и примеры

В Bash невозможно создать настоящие многомерные массивы. Однако аналогичного эффекта можно добиться, используя массивы массивов или ассоциативные массивы. Я объясню оба подхода:

  1. Массивы массивов:
    Вы можете создать массив, каждый элемент которого сам по себе является массивом. Вот пример:

    # Declare a 2D array
    declare -a myArray
    myArray[0]=(1 2 3)
    myArray[1]=(4 5 6)
    myArray[2]=(7 8 9)
    # Iterate over the 2D array
    for ((i=0; i<${#myArray[@]}; i++)); do
       for ((j=0; j<${#myArray[i][@]}; j++)); do
           echo "${myArray[i][j]}"
       done
    done
  2. Ассоциативные массивы:
    Bash также поддерживает ассоциативные массивы, которые позволяют использовать строки в качестве индексов. Вот пример:

    # Declare an associative array
    declare -A myArray
    myArray["row1"]=(1 2 3)
    myArray["row2"]=(4 5 6)
    myArray["row3"]=(7 8 9)
    # Iterate over the associative array
    for row in "${!myArray[@]}"; do
       for element in "${myArray[$row][@]}"; do
           echo "$element"
       done
    done

Это два распространенных подхода к моделированию многомерных массивов в Bash. Помните, что Bash в первую очередь предназначен для написания сценариев и не идеален для сложных структур данных. Если вы работаете с более сложными данными, возможно, вам стоит рассмотреть возможность использования другого языка программирования.