Кроме обычных переменных, 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 < текстовый_файл
Рубрики