English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Массивы Shell

В массив можно поместить несколько значений. Bash Shell поддерживает одномерные массивы (не поддерживает многомерные массивы), при инициализации не нужно определять размер массива (как в PHP).

Как и в большинстве языков программирования, индекс элемента массива начинается с 0.

Массивы в Shell определяются с помощью круглых скобок, элементы разделены символом "Пробел", грамматический формат следующий:

array_name=(value1 value2 ... valuen)

Онлайн пример

#!/bin/bash
# author:Основной курс
# url:ru.oldtoolbag.com
my_array=(A B "C" D)

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

array_name[0]=value0
array_name[1]=value1
array_name[2]=value2

Чтение массива

Общий формат чтения значения элемента массива:

${array_name[index]}

Онлайн пример

#!/bin/bash
# author:Основной курс
# url:ru.oldtoolbag.com
my_array=(A B "C" D)
echo "Первый элемент: ${my_array[0]}"
echo "Второй элемент: ${my_array[1]}"
echo "Третий элемент: ${my_array[2]}"
echo "Четвертый элемент: ${my_array[3]}"

Выполнение скрипта, результат вывода будет следующим:

$ chmod +x test.sh 
$ ./test.sh
Первый элемент: A
Второй элемент: B
Третий элемент: C
Четвертый элемент: D

Получение всех элементов массива

Использование @ или * позволяет получить все элементы массива, например:

#!/bin/bash
# author:Основной курс
# url:ru.oldtoolbag.com
my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D
echo "Элементы массива: ${my_array[*]}"
echo "Элементы массива: ${my_array[@]}"

Выполнение скрипта, результат вывода будет следующим:

$ chmod +x test.sh 
$ ./test.sh
Элементы массива: A B C D
Элементы массива: A B C D

Получение длины массива

Методы получения длины массива такие же, как и получения длины строки, например:

#!/bin/bash
# author:Основной курс
# url:ru.oldtoolbag.com
my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D
echo "Количество элементов массива: ${#my_array[*]}"
echo "Количество элементов массива: ${#my_array[@]}"

Выполнение скрипта, результат вывода будет следующим:

$ chmod +x test.sh 
$ ./test.sh
Количество элементов массива: 4
Количество элементов массива: 4