Познакомьтесь с массивами Bash: как их объявлять, манипулировать ими и удалять.
Массивы — это хранилища данных, используемые для хранения значений, которые имеют некоторую связь друг с другом. В отличие от большинства языков программирования, массивы Bash могут хранить значения разных типов данных в одном массиве.
Bash имеет два типа массивов: индексированные массивы и ассоциативные массивы. Индексы индексированных массивов начинаются с 0 до (n-1), как это принято в большинстве языков. Однако массивы в Bash немногочисленны. Это означает, что вы можете назначить (n-1)-й элемент массива, не присваивая (n-2)-й элемент.
В этом уроке вы узнаете, как работать с массивами в Bash. Давайте начнем.
Определение массивов
Существует три способа определения массивов в Bash. Подобно переменным Bash, массивы необходимо инициализировать при создании. Единственное исключение из этого правила — если вы используете объявить ключевое слово. Вам также необходимо убедиться, что по обе стороны от оператора присваивания не осталось места при инициализации массива.
Первый метод — составное присвоение значений имени массива. Есть два способа сделать это:
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.