Массивы представляют собой набор элементов данных одного типа, которые хранятся в смежных областях памяти. Или мы можем сказать, что это простейшая форма структуры данных, к элементам которой можно получить доступ напрямую, используя номер индекса, в котором они хранятся. В большинстве случаев возникает необходимость хранить в памяти данные одного типа, а не создавать несколько переменных для каждого типа данных. Мы можем просто использовать массив для хранения данных аналогичного типа в одном массиве. Прежде всего, каждый язык программирования поддерживает массивы так же, как и Linux. Мы также можем создать массив, используя различные команды и методы в Linux.
Используя массив bash, мы можем хранить данные в непрерывной памяти. Массив Bash хранит данные в виде индексации или также можно сказать, что это набор переменных. Но в типичном массиве мы можем хранить только элементы одного типа, но массив bash позволяет нам хранить все типы данных в отдельных массивах, например, хранить строки и числа.
Объявление массива в Bash
Существует два типа массивов bash: индексированный массив и ассоциативный массив. Индексированные массивы — это те массивы, в которых хранятся элементы, которым присваиваются числовые значения, начиная с «0» до «N» целых чисел. Второй представляет собой ассоциативный массив, основанный на парах ключ-значение. Или мы можем сказать, что он использует ключ для сопоставления значений в памяти.
Пример №1:
Прежде чем объявить массив, нам сначала нужно установить bash на нашу ОС. В нашем случае он уже установлен, поэтому нам не нужно устанавливать его снова. Теперь, просто проверив его версию, мы перейдем к нашей основной задаче — созданию массива в bash. Выполнив приведенную ниже команду, мы можем проверить версию bash, установленную в настоящее время в нашей системе.
andreyex@linux-VirtualBox:~$ bash - - version
Когда мы запустим приведенную выше команду, она отобразит сведения о версии bash. Если ваш bash не установлен, в терминале появится сообщение об ошибке. Поскольку у нас есть обновленная версия bash, она не будет обновляться. Вывод команды будет отображаться на терминале, как показано ниже.
GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu) Copyright (C) 2019 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
Теперь давайте создадим массив, для которого мы запустим команду, указанную ниже:
andreyex@linux-VirtualBox:~$ my_array=()
В этой команде мы просто используем имя массива, назначая ему пустую скобку, что означает, что мы объявляем пустой массив. После запуска вышеуказанной команды он передаст нам терминал без отображения каких-либо результатов. В памяти будет присвоен индекс «my_array», который затем можно будет использовать для сохранения в нем значения. Теперь мы проверим, создан ли наш пустой массив или нет. Для проверки того, что массив создан, мы запустим команду, указанную ниже.
andreyex@linux-VirtualBox:~$ printf ${#my_array[*]}
В приведенной выше команде мы использовали оператор printf для отображения содержимого, которое хранится в созданном нами массиве. Поскольку мы хотим отобразить все значения, хранящиеся в массиве «my_array», мы передали значение звездочки «*» в скобках, которое используется для вывода всех значений массива.
0 andreyex@linux-VirtualBox:~$
Пример №2:
В этом примере мы попробуем другой метод объявления массива. В этом методе мы будем использовать ключевое слово «declare» вместе с флагом для резервирования памяти. Для создания массива мы просто запустим показанную ниже команду:
andreyex@linux-VirtualBox:~$ declare –a array_a=()
В приведенной выше команде ключевое слово declare используется для объявления переменной, когда мы передаем переменную «-a» вместе с объявлением, которое имеет тенденцию создавать и инициализировать массив. В этом мы создали массив с именем «array_a», которому мы еще не передали никакого значения. Просто назначив ему пустую скобку, мы просто запустим команду, она не будет отображать вывод в терминале. Просто запустив эту команду, мы можем объявить массив. Он резервирует место в памяти для будущего использования.
Теперь мы проверим, создан ли массив или нет. Для этого мы запустим следующую команду в терминале, чтобы получить вывод.
andreyex@linux-VirtualBox:~$ printf ${#array_a[@]}
Используя оператор printf для печати массива, для этого мы просто передали имя массива вместе со знаком #, который подразумевает количество значений, которые должны быть напечатаны из указанного массива: где «@» указывает, что все значения, которые хранятся в массиве должны отображаться. После выполнения приведенной выше команды мы получим вывод, как в примере ниже. Как и в нашем массиве, мы не сохранили никаких значений, поэтому отображалось нулевое значение «0».
0 andreyex@linux-VirtualBox:~$
Пример №3:
На этой иллюстрации мы попробуем другой метод объявления пустого массива, в котором мы просто создадим массив, не присваивая ему никакого значения. Просто запустив приведенную ниже команду, мы защитим индекс в памяти.
andreyex@linux-VirtualBox:~$ declare –a array
Мы объявили массив с именем «array». На этот раз мы ничего не присваивали массиву. После запуска команды она не будет отображать никаких результатов. Просто позвольте нам запустить дальнейшие команды, как показано ниже.
andreyex@linux-VirtualBox:~$ echo ${#array[*]}
В этой команде мы просто передали массив в качестве аргумента. После запуска этой команды мы получим вывод, как показано ниже.
0 andreyex@linux-VirtualBox:~$
Пример №3:
В это примере мы попытаемся объявить массив, а затем вывести сообщение о том, пуст ли массив или нет. Для этого мы напишем команду запуска в терминале, указанном ниже:
andreyex@linux-VirtualBox:~$ declare –a arr
Используя приведенную выше команду, мы объявили массив с именем «arr». Теперь ячейка памяти для «arr» зарезервирована. Давайте создадим условие, которое будет выполнять вывод независимо от того, пуст файл или нет.
andreyex@linux-VirtualBox:~$ if ! (( ${#arr[*]} –eq 0)); then echo “you created an empty array”; fi
В этом мы использовали оператор if, в котором мы передали условие, что если массив «arr» равен 0, тогда он просто отобразит сообщение «you created an empty array».
You created an empty array
Заключение
Мы изучили создание массива в bash. Мы обсудили два типа массивов, которые можно создать в bash, и то, как мы можем зарезервировать место в памяти для массива. Затем, реализовав несколько методов, мы создали пустые массивы. Вы можете попробовать больше примеров для лучшего понимания.