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


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


# Обратите внимание на логические условия. # И-СПИСОК отрабатывает по true, ИЛИ-СПИСОК -- по false.

exit 0

Списки возвращают код завершения последней выполненной команды.

Комбинируя "И" и "ИЛИ" списки, легко "перемудрить" с логическими условиями, поэтому, в таких случаях может потребоваться детальная отладка.

false && true || echo false # false

# Тот же результат дает ( false && true ) || echo false # false # Но не эта комбинация false && ( true || echo false ) # (нет вывода на экран)

# Обратите внимание на группировку и порядок вычисления условий -- слева-направо, #+ поскольку логические операции "&&" и "||" имеют равный приоритет.

# Если вы не уверены в своих действиях, то лучше избегать таких сложных конструкций.

# Спасибо S.C.

См. Пример A-8 и Пример 7-4, иллюстрирующие использование И/ИЛИ-списков для проверки переменных.

Глава 25. Массивы

Новейшие версии Bash поддерживают одномерные массивы. Инициализация элементов массива может быть произведена в виде: variable[xx]. Можно явно объявить массив в сценарии, с помощью директивы declare: declare -a variable. Обращаться к отдельным элементам массива можно с помощью фигурных скобок, т.е.: ${variable[xx]}.

Пример 25-1. Простой массив

#!/bin/bash

area[11]=23 area[13]=37 area[51]=UFOs

# Массивы не требуют, чтобы последовательность элементов в массиве была непрерывной.

# Некоторые элементы массива могут оставаться неинициализированными. # "Дыркм" в массиве не являются ошибкой.

echo -n "area[11] = " echo ${area[11]} # необходимы {фигурные скобки}

echo -n "area[13] = " echo ${area[13]}

echo "содержимое area[51] = ${area[51]}."

# Обращение к неинициализированным элементам дает пустую строку. echo -n "area[43] = " echo ${area[43]} echo "(элемент area[43] -- неинициализирован)"

echo

# Сумма двух элементов массива, записанная в третий элемент area[5]=`expr ${area[11]} + ${area[13]}` echo "area[5] = area[11] + area[13]" echo -n "area[5] = " echo ${area[5]}




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