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

<p><strong>Пример 3-1. Вложенные блоки и перенаправление ввода-вывода</strong></p>

#!/bin/bash

# Чтение строк из файла /etc/fstab.

File=/etc/fstab

{

read line1

read line2

} < $File

echo "Первая строка в $File :"

echo "$line1"

echo

echo "Вторая строка в $File :"

echo "$line2"

exit 0

<p><strong>Пример 3-2. Сохранение результата исполнения вложенного блока в файл</strong></p>

#!/bin/bash

# rpm-check.sh

# Запрашивает описание rpm-архива, список файлов, и проверяется возможность установки.

# Результат сохраняется в файле.

#

# Этот сценарий иллюстрирует порядок работы со вложенными блоками кода.

SUCCESS=0

E_NOARGS=65

if [ -z "$1" ]

then

echo "Порядок использования: `basename $0` rpm-file"

exit $E_NOARGS

fi

{

echo

echo "Описание архива:"

rpm -qpi $1 # Запрос описания.

echo

echo "Список файлов:"

rpm -qpl $1 # Запрос списка.

echo

rpm -i --test $1 # Проверка возможности установки.

if [ "$?" -eq $SUCCESS ]

then

echo "$1 может быть установлен."

else

echo "$1 -- установка невозможна!"

fi

echo

} > "$1.test" # Перенаправление вывода в файл.

echo "Результаты проверки rpm-архива находятся в файле $1.test"

# За дополнительной информацией по ключам команды rpm см. man rpm.

exit 0

В отличие от групп команд в (круглых скобках), описаных выше, вложенные блоки кода, заключенные в {фигурные скобки} исполняются в пределах того же процесса, что и сам скрипт (т.е. не вызывают запуск дочернего процесса -- subshell).[ 12 ]

{} \;

pathname -- полное имя файла (т.е. путь к файлу и его имя). Чаще всего используется совместно с командой find.

Обратите внимание на то, что символ ";", которым завершается ключ -exec команды find, экранируется обратным слэшем. Это необходимо, чтобы предотвратить его интерпретацию.

[ ]

test.

Проверка истинности выражения, заключенного в квадратные скобки [ ]. Примечательно, что [ является частью встроенной команды test (и ее синонимом), И не имеет никакого отношения к "внешней" утилите /usr/bin/test.

[[ ]]

test.

Проверка истинности выражения, заключенного между [[ ]] (зарезервированное слово интерпретатора).

См. описание конструкции [[ ... ]] ниже.

[ ]

элемент массива.

При работе с массивами в квадратных скобках указывается порядковый номер того элемента массива, к которому производится обращение.

Array[1]=slot_1

echo ${Array[1]}

[ ]

диапазон символов.

В регулярных выражениях, в квадратных скобках задается диапазон искомых символов.

(( ))

двойные круглые скобки.

Вычисляется целочисленное выражение, заключенное между двойными круглыми скобками (( )).

См. обсуждение, посвященное конструкции (( ... )) .

> &> >& >> <

перенаправление.

Конструкция scriptname >filename перенаправляет вывод scriptname в файл filename. Если файл filename уже существовал, то его прежнее содержимое будет утеряно.

Конструкция command &>filename перенаправляет вывод команды command, как со stdout, так и с stderr, в файл filename.

Конструкция command >&2 перенаправляет вывод со stdout на stderr.

Конструкция scriptname >>filename добавляет вывод scriptname к файлу filename. Если задано имя несуществующего файла, то он создается.

подстановка процесса.

(command)>

<(command)

В операциях сравнения, символы "<" и ">" обозначают операции сравнения строк .

А так же -- операции сравнения целых чисел. См. так же Пример 12-6.

<<

перенаправление ввода на встроенный документ.

<, >

Посимвольное ASCII-сравнение.

veg1=carrots

veg2=tomatoes

if [[ "$veg1" < "$veg2" ]]

then

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных