Познакомьтесь с массивами Bash: как их объявлять, манипулировать ими и удалять.

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

Bash имеет два типа массивов: индексированные массивы и ассоциативные массивы. Индексы индексированных массивов начинаются с 0 до (n-1), как это принято в большинстве языков. Однако массивы в Bash немногочисленны. Это означает, что вы можете назначить (n-1)-й элемент массива, не присваивая (n-2)-й элемент.

В этом уроке вы узнаете, как работать с массивами в Bash. Давайте начнем.

Определение массивов

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

instagram viewer

Первый метод — составное присвоение значений имени массива. Есть два способа сделать это:

arr1 = (3 5 6 7)
# or this
arr2 = ([3]=5 [1]=8 [0]=7)

При первом составном присваивании значения в круглых скобках присваиваются последовательно из индекса. [0] к [3].

Однако во втором случае значения присваиваются индексу в том порядке, который указал программист.

Связанный: Что такое переменные среды в Linux? Все, что Вам нужно знать

Если вы внимательно обратили внимание на обр2, вы заметите, что индекс [2] остался в стороне. Массив по-прежнему будет создан без каких-либо ошибок. Это задание на самом деле является демонстрацией разреженного хранилища в массивах Bash, о котором мы говорили ранее.

Обратите внимание, что значения массива не разделяются запятыми. Значения просто разделяются пробелами.

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

arr3[0]=Toyota
arr3[1]=Honda
arr3[2]=Mercedes

Третий способ — явно объявить массив с ключевым словом объявить:

declare -a arrayName

Операции с массивами

Для доступа к элементам массива используйте следующий синтаксис: ${массив[индекс]}

fruits=(mango banana apples)
echo${fruits[1]}# output is banana

Если вместо этого вам нужно распечатать весь массив, используйте @ символ как

индекс из ${массив[индекс]}:

echo${fruits[@]}

Чтобы узнать количество элементов в массиве, используйте команду # символ, как показано ниже:

echo ${#fruits[1]}

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

fruits[1]=pears

Ассоциативные массивы

Массив, ключами которого являются произвольные значения, называется ассоциативным массивом. Эти массивы используются для хранения связанных пар ключ-значение.

Связанный: Как превратить сценарии Bash в кликабельные приложения с помощью AppleScript

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

# associative array called animal
declare -A animal
animal[giraffe]=tall
animal[lion]=brave
animal[cheetah]=fast

Вы можете получить доступ к элементу-члену так же, как и к индексированным массивам:

echo${animal[lion]}

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

echo${animal[@]}

Если вы хотите распечатать все ключи массива, вы можете использовать @ и ! символы, как показано ниже:

echo${!animal[@]}

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

Если вы хотите удалить элемент массива или весь массив, используйте следующий синтаксис:

unset arrayName[Key] # delete array item
unset arrayName # delete entire array

Использование команды printf

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

Однако печать Команда предлагает более конкретные параметры форматирования, которые упрощают написание сценариев Bash. Изучение печать Эта функция, несомненно, улучшит ваш опыт форматирования строк и эффективность форматирования строк в Bash.