Рубрики
bash

bash Массивы

Кроме обычных переменных, bash также различает массивы. 
Вплоть до версии 3 индекс должен был быть числом. 
Обратите внимание, что синтаксис для доступа к n-ному элементу отличается от синтаксиса, принятого в С.
х=()- Определение пустого массива
х[0]='а' -  Присваивание элементов массива
х[1]='Ь' -  Присваивание элементов массива
х[2]='с' -  Присваивание элементов массива
х=('а'  'b'  'с') - Краткий вариант записи четырех предыдущих строк
echo ${x[l]} -  Считывание элемента массива
echo ${x[@]} - Считывание всех элементов массива
Для программистов исключительно важны массивы ассоциативных элементов, которые стали поддерживаться в bash, начиная с версии 4.0. 
Не забудьте, что массив сначала требуется специально объявить как ассоциативный с помощью dec 1 a re -A. 
В противном случае система сочтет, что это обычный массив. 
Тогда последовательности символов, содержащиеся в индексе, будут интерпретированы как О, и у вас получится обычный массив, состоящий из одного-единствеиного элемента (Index 0).
declare -Ay - Определение пустого массива ассоциативных элементов
y[abc]=123 - Присваивание элемента ассоциативного массива
y[efg]=xxx - Присваивание элемента ассоциативного массива
у=( [abc]=123 [efg]=xxx ) - Краткий вариант записи двух предыдущих строк
echo ${y[abc]|- Считывание одного элемента массива
Еще одно важное нововведение версии 4 заключается в том, что с помощью команды mapfile можно построчно преобразовать текстовый файл в элементы обычного массива:
mapfile z < текстовый_файл