Нажмите "Enter" для перехода к содержанию

Массивы Bash

0

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

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

Массивы Bash

Массивы оболочки Bash работают почти так же, как и в других языках программирования. Перед тем как вы сможете использовать массив, его нужно объявить. Это можно сделать несколькими способами, первый из них – это использование команды оболочки declare:

declare -a имя_массива

Но необязательно делать именно так, вы можете сразу начать задавать элементы массива по нужным номерам:

имя_массива[ XX ]=значение

Здесь XX обозначает индекс массива. Еще один удобный способ создавать массивы строк Bash – это просто перечислить все элементы в круглых скобках:

имя_массива=( э лемент_1, элемент_2 элемент_3 . )

Или вы можете сразу задать индекс массива для каждого из элементов:

имя_массива=( [ XX ]=значение [ XX ]=значение . . . )

Также можно прочитать значения для массива из клавиатуры или другого источника ввода:

read -a имя_массива

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

Это все основные моменты, которые будут вам полезны при использовании массивов, теперь нам осталось рассмотреть основные примеры, чтобы вам было более понятно как все это работает.

Примеры использования массивов Bash

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

array=(первый второй третий четвертый пятый)

Теперь попытаемся вывести один из элементов массива по его индексу:

Чаще всего используются массивы строк Bash, но иногда могут встречаться и цифры. Помните про нумерацию? Индексы элементов массива начинаются с нуля. Для вывода значения элемента по индексу можно использовать и немного другой синтаксис:

Вы можете вывести все элементы:

Все элементы, начиная с номера 1:

Вывести все элементы которые находятся в диапазоне от 1 до 4:

Чтобы узнать длину первого элемента выполните:

А посмотреть количество элементов массива Bash можно таким же синтаксисом:

Кроме всего прочего, вы можете заменить одни символы в определенном элементе массива или во всем массиве на другие. Для этого используйте:

В некоторых случаях, для перебора элементов массива очень удобно использовать циклы. На этот раз сделаем небольшой скрипт:

array=(первый второй третий четвертый пятый)
for i in $
do
echo $i
done

Внутри цикла вы можете делать со значением элемента все, что вам нужно. Как я уже писал выше, вы можете прочитать значения для массива с помощью функции read:

echo “Введите элементы массива:”
read -a array
echo “Результат:”
for i in $
do
echo $i
done

Как и в любом другом варианте, вам нужно, чтобы все элементы были разделены пробелом. Точно так же можно присвоить массиву результат выполнения команды. Например, сохраним список файлов, полученный от ls:

Усложним задачу и сделаем скрипт, который будет выводить все файлы из указанной директории, которые имеют права доступа 755:

if [ $# -ne 1 ]; then
echo “Используйте: $0 <путь>”
exit $ERR
fi

if [ ! -d $1 ]; then
echo “Каталог $1 не существует”
exit $ERR
fi

temp=( $(find $1 -maxdepth 1 -type f) )

for i in “$”
do
perm=$(ls -l $i)
if [ `expr $ “”

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *