Shell Scripting Tutorial for Beginners 14 - Array variables
Оглавление:
- Bash Arrays
- Создание массивов Bash
- Создание численно проиндексированных массивов
- Создание ассоциативных массивов
- Операции с массивами
- Справочные элементы
- Длина массива
- Цикл по массиву
- Добавить новый элемент
- Удалить элемент
- Вывод
Массивы являются одной из наиболее используемых и фундаментальных структур данных. Вы можете думать, что массив - это переменная, которая может хранить несколько переменных внутри него.
мы рассмотрим массивы Bash и объясним, как их использовать в сценариях Bash.
Bash Arrays
Bash поддерживает одномерные числовые и ассоциативные типы массивов. На числовые массивы ссылаются, используя целые числа, а на ассоциативные ссылаются, используя строки.
Численно индексированные массивы могут быть доступны с конца, используя отрицательные индексы, индекс
-1
ссылается на последний элемент. Индексы не должны быть смежными.
В отличие от большинства языков программирования, элементы массива Bash не обязательно должны быть одного типа данных. Вы можете создать массив, который содержит как строки, так и числа.
Bash не поддерживает многомерные массивы, и вы не можете иметь элементы массива, которые также являются массивами.
Не существует ограничения на максимальное количество элементов, которые могут быть сохранены в массиве.
Создание массивов Bash
Массивы в Bash могут быть инициализированы разными способами.
Создание численно проиндексированных массивов
Переменные Bash являются нетипизированными, любая переменная может использоваться как индексированный массив без объявления его.
Чтобы явным образом объявить массив, используйте встроенное объявление:
declare -a array_name
Одним из способов создания индексированного массива является использование следующей формы:
array_name=value_1 array_name=value_2 array_name=value_n
Где
index_*
- положительное целое число
Еще один способ создания числового массива - указать список элементов в скобках, разделенных пробелом:
array_name=(element_1 element_2 element_N)
Когда массив создается с использованием приведенной выше формы, индексация начинается с нуля, т.е. первый элемент имеет индекс
0
.
Создание ассоциативных массивов
В отличие от числового индексирования, ассоциативные массивы должны быть объявлены, прежде чем они могут быть использованы.
Чтобы объявить ассоциативный массив, используйте встроенную функцию
declare
с опцией
-A
(в верхнем регистре):
declare -A array_name
Ассоциативные массивы могут быть созданы с использованием следующей формы:
declare -A array_name array_name=value_foo array_name=value_bar array_name=value_xyz
Где
index_*
может быть любой строкой.
Вы также можете создать ассоциативный массив, используя форму ниже:
declare -A array_name array_name=(=value_foo =value_bar =value_xyz)
Операции с массивами
Поначалу синтаксис массивов Bash может показаться немного странным, но он станет более понятным после прочтения этой статьи.
Справочные элементы
Чтобы ссылаться на один элемент, вам нужно знать индекс элемента.
На любой элемент можно ссылаться, используя следующий синтаксис:
${array_name}
Синтаксис для доступа к элементу массива аналогичен синтаксису большинства языков программирования. Фигурные скобки
${}
необходимы, чтобы избежать операторов расширения имени оболочки.
Напечатаем элемент с индексом
1
:
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print element echo ${my_array}
Helium
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium
Единственная разница между
@
и
*
заключается в том, что форма
${my_array}
двойные кавычки. В этом случае
*
расширяется до одного слова, где элементы массива разделяются пробелом.
@
расширяет каждый элемент массива до отдельного слова. Это особенно важно при использовании формы для неграмотных элементов массива.
Чтобы напечатать ключи массива, добавьте
!
оператор перед именем массива:
${!array_name}
Вот пример:
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${!my_array}"
Длина массива
Чтобы получить длину массива, используйте следующую форму:
${#array_name}
Синтаксис такой же, как и при ссылке на все элементы с добавлением символа
#
перед именем массива.
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## array Length echo ${#my_array}
Цикл по массиву
Наиболее распространенный способ перебора каждого элемента в массиве - использование цикла for:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${my_array}" do echo "$i" done
Приведенный выше код будет перебирать массив и печатать каждый элемент в новой строке:
Hydrogen Helium Lithium Beryllium
Вот пример того, как напечатать все ключи и значения:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${!my_array}" do echo "$i" "${my_array}" done
0 Hydrogen 1 Helium 2 Lithium 3 Beryllium
Другой способ перебрать массив - получить длину массива и использовать цикл в
C style
:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") # Length of the array length=${#my_array} # Array Loop for ((i=0; i < ${length}; i++)) do echo $i ${my_array} done
0 Hydrogen 1 Helium 2 Lithium 3 Beryllium
Добавить новый элемент
Чтобы добавить новый элемент в массив bash и указать его индекс, используйте следующую форму:
my_array="New Element"
Вот пример:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new element my_array="Aluminum" ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium Aluminum
Другой способ добавления нового элемента в массив без указания индекса - использование оператора
+=
. Вы можете добавить один или несколько элементов:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new elements my_array+=(Cobalt Nickel) ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium Cobalt Nickel
Удалить элемент
Чтобы удалить один элемент, вам нужно знать индекс элемента. Элемент можно удалить с помощью команды
unset
:
unset my_array
Давайте посмотрим на пример:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## remove element unset my_array ## print all elements echo "${my_array}"
Вывод
Мы объяснили, как создавать числовые индексированные и ассоциативные массивы. Мы также показали, как перебирать массивы, вычислять длину массива, добавлять и удалять элементы.
терминал bashMicrosoft Research Asia запустила ворота в 10 лет Bash
Microsoft Research Asia выросла с десятка человек в 1998 году до более чем 350 лет спустя.
Как запустить Bash на Ubuntu в Windows 10
Включение подсистемы Windows для Linux позволит вам запустить Bash на Ubuntu в Windows 10, сценарии Bash , Инструменты командной строки Linux, инструменты Linux-first.
Bash: добавить в файл
В Linux существует несколько способов добавления текста в файл. Эта статья объясняет некоторые из них.







