Выбрать главу

export PATH

SYBASE="/sybase"; export SYBASE

DSQUERY=ACESRV; export DSQUERY

PASSWORD="prilog"

DATABASES="dwbased tempdb aggs levels reps accounts"

for loop in $DATABASES

do

su Sybase -c '/sybase/bin/isql -Usa -P$PASSWORD' << MAYDAY

use master

go

sp_dboption $LOOP,"select into/bulkcopy/pllsort", true

go

use $LOOP go

checkpoint go

MAYDAY

done

Рассматривая конструкцию "документ здесь", при выполнении вышеуказанной команды интерпретатор shell оценивает приведенный выше код.

use master

go

sp_dboption dwbased,"select into/bulkcopy/pllsort", true

go

use dw_based

go

checkpoint go

Когда интерпретатор shell просматривает завершающее слово mayday, сценарий начинает следующую итерацию для цикла for. При этом из списка выбирается следующая база данных. При выполнении сценария получаются следующие результаты:

$ set.select

Database option 'select into/bulkcopy/pllsort' turned ON for database

'dwbased'.

Run the CHECKPOINT command in the database that was changed.

(return status=0)

Database option 'select into/bulkcopy/pllsort' turned ON for database 'tempdb'.

Run the CHECKPOINT command in the database that was changed, (return status=0)

Database option 'select into/bulkcopy/pllsort' turned ON for database 'aggs'.

Run the CHECKPOINT command in the database that was changed, (return status=0)

25.6. Заключение

В главе содержатся примеры по автоматизации задач с использованием конструкции "документ здесь". Конструкцию "документ здесь" можно применять при решении большого количества задач, особенно при установке подключения к приложениям или выполнении команды ftping. Приведенные сценарии можно выполнять и модифицировать для решения конкретных задач конечного пользователя.

ГЛАВА 26

Утилиты интерпретатора shell

В этой главе рассматриваются следующие темы:

   • создание датируемых имен файлов и временных файлов;

   • сигналы;

   • команда trap и способы перехвата сигналов;

   • команда eval;

   • команда logger.

26.1. Создание регистрационных файлов

Используя любой сценарий, нужно создавать временные файлы или файлы регистрации (журнальные файлы). При выполнении сценариев, создающих резервные копии, удобно сохранять журналы фактических резервных копий. Обычно журналы хранятся в файловой системе несколько недель, затем происходит их очистка.

В процессе разработки сценариев непрерывно создаются временные файлы. Временные файлы также необходимы при функционировании обычных сценариев, содержащих информацию, которая ранее использовалась при вводе данных для другого процесса. Чтобы отобразить временный файл на экране или вывести его на печать, можно применить команду cat.

26.1.1. Применение команды date для создания журнальных файлов

Если возникла необходимость создать журнальный файл, желательно сделать его уникальным. Для этого достаточно воспользоваться командой date. Командой date можно манипулировать, а также добавлять ее к имени файла, который станет журнальным файлом.

Для изменения формата отображения данных применяется следующий формат:

date option + %format

С помощью знака плюс (+( можно в различных форматах отображать текущую дату. Ниже дата отображается в формате день, месяц, год.

$ date +%d%m%y

090699

Приведем некоторые наиболее часто применяемые форматы данных.

$ date +%d-%m-%y

09-06-99

$ date +%A%e" "%B" "%Y

Wednesday 9 June 1999

Отображение времени в формате чч: мм: $ date +%R

10:07

$ date +%A" "W "%p Wednesday 10:09 AM

Отображение времени в расширенном формате: $ date +%T

10:29:41

$ date +%A" "%T

Wednesday 10:31:19

Обратите внимание на применение двойных кавычек, которые позволяют в потоке данных вывода указывать пробелы.

Для использования даты в качестве части имени файла проще всего воспользоваться подстановкой. Введите переменную, значением которой является заново отформатированная дата, и присоедините эту переменную к имени файла. Этим именем и будет назван журнальный файл.

В следующем примере создаются два журнальных файла. Для одного файла дата указывается в формате дд, мм, гг, а для другого — в формате дд, чч, мм.

Сценарий имеет вид:

$ pg log

#!/bin/sh

# регистрация

#

MYDATE=`date +%d%m%y`

#присоединение MYDATE к переменной LOGFILE, которая содержит действительное #имя файла регистрации.

LOGFILE=/logs/backup_log.$MYDATE

#создание файла

>$LOGFILE

MVTTIME= `date +%d%R` LOGFILE2=/logs/admin_log.$MYTIME

# создание файла

>$LOGFILE2

При выполнении этого сценария создаются два журнальных файла.