Литмир - Электронная Библиотека

Формат команды:

set параметр1 параметр2..

В следующем примере параметрам присваиваются значения accounts.doc, и accounts.bak. Затем в сценарии по этим параметрам выполняется цикл.

$ pg set_ex

#!/bin/sh

set accounts.doc accounts.bak

while [ $# != 0 ]

do

echo $1

shift

done

$ set_ex

accounts.doc accounts.bak

Команду set удобно использовать, если при проверке сценария необходимы параметры. Дело в том, что вновь введенные аргументы сохраняются всякий раз, когда выполняется сценарий.

24.1.3. Команда times

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

$ times

0m0.10s 0m0.13s 0m0.49s 0m0.36s

Эта команда применяется довольно часто!

24.1.4. Команда type

Команда type позволяет выяснить, содержится ли некоторая команда в системе, и определить тип данной команды. Команда type также сообщает, является ли название команды действительным и где именно в системе находится эта команда. Ниже приводятся примеры использования команды type:

$ type mayday

type: mayday: not found

$ type pwd

pwd ls a shell builtin

$ type times

times ls a shell builtin

$ type cp

cp is /bin/cp

24.1.5. Команда ulimit

Команда ulimit используется для задания и отображения предельных значений, применяемых при выполнении сценария. Обычно эта команда находится в файле /etc/profile, но вы можете использовать ее для своих нужд из текущего интерпретатора shell либо из вашего файла .profile. Общий формат команды:

ulimit опции

Ниже приводится несколько опций команды ulimit; здесь рассматриваются наиболее часто применяемые опции:

Опция

Значение

-a

Отображает текущие ограничения

-c

Ограничивает размер дампов ядра

-f

Ограничивает N блоками размер выходного файла, который создается исполняемым процессом

Ниже указаны значения, полученные при выполнении команды ulimit:

$ ulimit -a

core file size (blocks) 10000OO

data seg size (kbytes) unlimited

file size (blocks] unlimited

max memory size (kbytes) unlimited

stack size (kbytes) 8192

cpu time (seconds] unlimited

max user processes 256

pipe size (512 bytes) 8

open files 256

virtual memory (kbytes) 2105343

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

$ ulimit -с 0

$

$ ulimit -a

core file size (blocks) 0

data seg size (kbytes) unlimited

file size (blocks) unlimited

max memory size (kbytes] unlimited

stack size (kbytes) 8192

cpu time (seconds) unlimited

max user processes 256

pipe size (512 bytes) 8

open files 256

virtual memory (Kbytes) 2105343

24.1.6. Команда wait

Команда wait применяется для ожидания завершения одного из дочерних процессов. Команду wait можно определить с помощью процесса ID. Если этого не сделать, ожидание будет длиться до завершения всех дочерних процессов.

Формат команды ожидания завершения всех дочерних процессов:

$ wait

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

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

Часть 5

Совершенствование навыков по написанию сценариев

ГЛАВА 25

Дальнейшее изучение конструкции "документ здесь"

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

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

   • скоростной метод создания файла;

   • меню с автоматизированными возможностями поиска;

   • передача файлов с помощью протокола ftp;

   • подключение к другим системам приложений.

Формат конструкции "документ здесь":

команда << слово

текст

слово

Чтобы вспомнить методы применения конструкции "документ здесь", рассмотрим принципы ее работы. Когда интерпретатор shell встречает символ <<, он ожидает встретить за ним разделитель (слово). Все, что следует за этим словом до следующего слова в строке, воспринимается как поток ввода. В качестве разделителя может служить любое слово.

Конструкция "документ здесь" может применяться при создании файла, выводе на экран списка файлов, сортировке списка файлов и при создании экранов.

25.1 Быстрый метод формирования файла

Ниже рассматривается быстрый метод формирования файла, содержащего некоторый текст:

$ cat >> myfile << NEWFILE

Введите какой‑нибудь текст, а по завершении ввода в новой строке просто укажите слово NEWFILE. В результате образуется файл myfile, содержащий этот текст.

Если файл с указанным именем существует, то вводимое содержимое добавляется в исходный файл.

При использовании клавиши [Tab] следует учитывать, что более ранние версии

командного интерпретатора не сохраняют значения символов табуляции. Для устранения этого недостатка введите дефис после двух угловых левых скобок, например:

cat >> myfile << - NEWFILE

25.2. Скоростной способ вывода документа на печать

Предположим, что нужно создать и вывести на экран небольшой документ, содержащий сообщение. Необязательно использовать редактор vi; вместо этого можно применить метод, показанный в следующем примере. Если после ввода символов QUICKDOC нажать клавишу [Return], документ пересылается на принтер.

$ lpr << QUICKDOC

**** INVITATION**** The Star Trek convention ls in town next week. Be there.

Ticket prices: (please phone)

QUICKDOC

25.3. Автоматизация меню

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

Существует сценарий по работе с меню базы данных, который отвечает за резервное копирование баз данных и выполнение административных задач. Меню базы данных применяется в течение дня для выполнения резервирования базы данных и выполнения других административных задач. Если же было принято решение о том, что каждую ночь создаются резервные копии всех баз данных с помощью утилиты cron, отпадает необходимость в создании другого сценария.

В данном случае используется конструкция "документ здесь", причем для навигации по меню применяется сценарий syb_backup, использующий поток ввода. Ниже показан поток вывода для сценария меню syb_backup.

89
{"b":"273485","o":1}