Книга: Искусство программирования на языке сценариев командной оболочки
Пример 25-3. Некоторые специфичные особенности массивов
Пример 25-3. Некоторые специфичные особенности массивов
#!/bin/bash
declare -a colors
# Допускается объявление массива без указания его размера.
echo "Введите ваши любимые цвета (разделяя их пробелами)."
read -a colors # Введите хотя бы 3 цвета для демонстрации некоторых свойств массивов.
# Специфический ключ команды 'read',
#+ позволяющий вводить несколько элементов массива.
echo
element_count=${#colors[@]}
# Получение количества элементов в массиве.
# element_count=${#colors[*]} -- дает тот же результат.
#
# Переменная "@" позволяет "разбивать" строку в кавычках на отдельные слова
#+ (выделяются слова, разделенные пробелами).
index=0
while [ "$index" -lt "$element_count" ]
do # Список всех элементов в массиве.
echo ${colors[$index]}
let "index = $index + 1"
done
# Каждый элемент массива выводится в отдельной строке.
# Если этого не требуется, то используйте echo -n "${colors[$index]} "
#
# Эквивалентный цикл "for":
# for i in "${colors[@]}"
# do
# echo "$i"
# done
# (Спасибо S.C.)
echo
# Еще один, более элегантный, способ вывода списка всех элементов массива.
echo ${colors[@]} # ${colors[*]} дает тот же результат.
echo
# Команда "unset" удаляет элементы из массива, или даже массив целиком.
unset colors[1] # Удаление 2-го элемента массива.
# Тот же эффект дает команда colors[1]=
echo ${colors[@]} # Список всех элементов массива -- 2-й элемент отсутствует.
unset colors # Удаление всего массива.
# Тот же эффект имеют команды unset colors[*]
#+ и unset colors[@].
echo; echo -n "Массив цветов опустошен."
echo ${colors[@]} # Список элементов массива пуст.
exit 0
Как видно из предыдущего примера, обращение к ${array_name[@]} или ${array_name[*]} относится ко всем элементам массива. Чтобы получить количество элементов массива, можно обратиться к ${#array_name[@]} или к ${#array_name[*]}. ${#array_name} -- это длина (количество символов) первого элемента массива, т.е. ${array_name[0]}.
- Пример 25-1. Простой массив
- Пример 25-2. Форматирование стихотворения
- Пример 25-3. Некоторые специфичные особенности массивов
- Пример 25-4. Пустые массивы и пустые элементы
- Пример 25-5. Копирование и конкатенация массивов
- Пример 25-6. Старая, добрая: "Пузырьковая" сортировка
- Пример 25-7. Вложенные массивы и косвенные ссылки
- Пример 25-8. Пример реализации алгоритма Решето Эратосфена
- Пример 25-9. Эмуляция структуры "СТЕК" ("первый вошел -- последний вышел")
- Пример 25-10. Исследование математических последовательностей
- Пример 25-11. Эмуляция массива с двумя измерениями
- Пример 25-4. Пустые массивы и пустые элементы
- Пример 25-1. Простой массив
- Пример установочного скрипта
- Пример из практики
- Особенности системы защиты данных в InterBase
- Особенности InterBase 6.5
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Отличительные особенности сервера Yaffil
- Примеры получения статистики
- Пример применения метода «пять почему»
- Отличительные особенности новой версии
- Пример 12-8. Частота встречаемости отдельных слов