Как использовать индексные массивы в Bash

Kak Ispol Zovat Indeksnye Massivy V Bash



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

Что такое индексные массивы

Индексированные массивы — это набор элементов в bash, доступ к которым можно получить с помощью индекса или ключа. Эти массивы можно использовать для хранения и извлечения данных в определенном порядке, что упрощает управление большими объемами данных. Синтаксис объявления индексированного массива в bash следующий:

< имя_массива > '=' ( элемент1 элемент2 элемент3 ... )

Здесь имя_массива — это имя массива, а элемент1, элемент2, элемент3 и т. д. — значения, которые должны храниться в массиве. Значения разделены пробелами, и обратите внимание, что вы также можете использовать команду declare для создания массива.







Как использовать индексированные массивы в Bash

Чтобы создать индексный массив в bash, вам просто нужно объявить переменную и присвоить ей значения, заключенные в круглые скобки и разделенные пробелами. Вот несколько примеров, демонстрирующих, как использовать индексированные массивы в bash:



Изменение порядка списка в Bash

Если у вас есть список элементов в определенном порядке, и вы хотите переупорядочить их по-другому. Вы можете использовать массив индексов для создания нового порядка элементов следующим образом:



#!/бин/баш
предметы '=' ( 'Манго' 'Ананас' 'Клубника' 'Вишня' 'Виноград' )
заказ '=' ( 4 2 0 3 1 )
для я в ' ${заказ[@]} '
делать
эхо ${элементов[$i]}
сделанный

В этом примере мы создаем массив с именем items из пяти элементов. Мы также создаем индексный массив с именем order, который определяет новый порядок элементов. Затем мы перебираем массив заказов и используем каждое значение в качестве индекса, чтобы получить соответствующий элемент из массива элементов и распечатать его.





Фильтрация списка в Bash

Если у вас есть список элементов, и вы хотите отфильтровать определенные элементы на основе условия. Вы можете использовать массив индексов для отслеживания индексов элементов, соответствующих условию, следующим образом:



#!/бин/баш
предметы '=' ( 'Манго' 'Ананас' 'Клубника' 'Вишня' 'Виноград' )
индексы '=' ( )

для я в ' ${!элементы[@]} '
делать
если [ [ ${элементов[$i]} == * 'р' * ] ]
затем
индексы+= ( $ я )
быть
сделанный

для я в ' ${индексы[@]} '
делать
эхо ${элементов[$i]}
сделанный

В этом примере мы создаем массив с именем items из пяти элементов. Мы также создаем пустой массив индексов, называемый index. Затем мы перебираем массив элементов и проверяем, содержит ли каждый элемент букву «r». Если это так, мы добавляем его индекс в массив index. Наконец, мы перебираем массив индексов и используем каждое значение в качестве индекса, чтобы получить соответствующий элемент из массива элементов и распечатать его.

Подсчет вхождений в Bash

Если у вас есть список элементов и вы хотите подсчитать количество вхождений каждого элемента, вы можете использовать массив индексов для отслеживания подсчета, и вот пример для демонстрации:

#!/бин/баш
предметы '=' ( 'Манго' 'Ананас' 'Клубника' 'Вишня' 'Виноград' )
считает '=' ( )

для я в ' ${!элементы[@]} '
делать
если [ [ ! ' ${количество[@]} ' =~ ' ${элементов[$i]} ' ] ]
затем
считает+= ( ' ${элементов[$i]} 1 дюйм )
еще
индекс =$ ( эхо ' ${количество[@]} ' | тр ' ' '\n' | схватить '^ ${элементов[$i]} ' | с )
считать =$ ( эхо ' ${количество[$index-1]} ' | резать ' ' -f2 )
считает [ $индекс - 1 ] '=' ' ${элементов[$i]} $((количество+1) )'
быть
сделанный

для считать в ' ${количество[@]} '
делать
эхо $количество
сделанный

Сначала он инициализирует массив с именем «items» со списком строк. Затем он объявляет пустой массив с именем counts. Цикл for создается для итерации каждого элемента в массиве «items», и для каждого элемента он проверяет, существует ли он уже в массиве «counts».

Если он не существует, он добавляет элемент и количество 1 в массив «counts». Если он существует, он увеличивает счетчик этого элемента в массиве counts. Наконец, для вывода каждого элемента и соответствующего ему счетчика используется еще один цикл for. Вывод этого кода распечатает количество каждого элемента в массиве «items», при этом дубликаты будут подсчитываться отдельно.

Обновление списка в Bash

Если у вас есть список элементов, и вы хотите добавить или удалить из него элементы, вы можете использовать для него индексный массив, и вот пример для демонстрации:

#!/бин/баш
предметы '=' ( 'Манго' 'Ананас' 'Клубника' 'Вишня' 'Виноград' )

# Добавляем новый элемент в индексированный массив по индексу 2
предметы [ 6 ] '=' 'апельсин'
# Удаление элемента с индексом 2 из индексированного массива
снят с охраны предметы [ 2 ]

# Печать обновленного массива
эхо ' ${элементов[@]} '

В скрипте определяется индексированный массив «items» с пятью начальными элементами. Чтобы добавить новый элемент, значение просто присваивается желаемому индексу с использованием синтаксиса массив[индекс]=значение. В этом скрипте «оранжевый» добавляется к индексу 6 массива. Чтобы удалить элемент, мы используем команду unset, за которой следует индекс элемента, который мы хотим удалить. В этом случае элемент с индексом 2 («Клубника») удаляется. Затем обновленный массив печатается с использованием синтаксиса «${array[@]}», который расширяет весь массив.

Заключение

Индексированные массивы — это удобная структура bash, позволяющая хранить несколько значений и управлять ими с помощью одной переменной. Понимая синтаксис и использование индексированных массивов, вы можете писать более эффективные и действенные сценарии bash.