Искусство программирования на языке сценариев командной оболочки


Программирование на языке сценариев командной оболочки - стр. 243


for index in 1 2 3 4 5 # Пять строк. do printf " %s\n" "${Line[index]}" done

for index in 1 2 # Две строки дополнительных атрибутов. do printf " %s\n" "${Attrib[index]}" done

exit 0

При работе с отдельными элементами массива можно использовать специфический синтаксис, даже стандартные команды и операторы Bash адаптированы для работы с массивами.

array=( ноль один два три четыре пять )

echo ${array[0]} # ноль echo ${array:0} # ноль # Подстановка параметра -- первого элемента. echo ${array:1} # оль # Подстановка параметра -- первого элемента, #+ начиная с позиции #1 (со 2-го символа).

echo ${#array} # 4 # Длина первого элемента массива.

array2=( [0]="первый элемент" [1]="второй элемент" [3]="четвертый элемент" )

echo ${array2[0]} # первый элемент echo ${array2[1]} # второй элемент echo ${array2[2]} # # Элемент неинициализирован, поэтому на экран ничего не выводится. echo ${array2[3]} # четвертый элемент

При работе с массивами, некоторые встроенные команды Bash имеют несколько иной смысл. Например, unset -- удаляет отдельные элементы массива, или даже массив целиком.

Пример 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.)




- Начало -  - Назад -  - Вперед -