1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Кроме обычных переменных, 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 < текстовый_файл |