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

Тут можно читать онлайн Мендель Купер - Искусство программирования на языке сценариев командной оболочки - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Искусство программирования на языке сценариев командной оболочки
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    3.7/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

Искусство программирования на языке сценариев командной оболочки - описание и краткое содержание, автор Мендель Купер, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Данное руководство не предполагает наличие у читателя познаний в области программирования на языке сценариев, однако, быстро восполняет этот недостаток, постепенно, шаг за шагом раскрывая мудрость и красоту UNIX. Это руководство может рассматриваться как учебник, предназначенный для самостоятельного изучения или как справочник по программированию на shell. Руководство снабжено серией хорошо прокомментированных примеров, поскольку лучший путь к изучению языка сценариев -- это написание сценариев.

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

Искусство программирования на языке сценариев командной оболочки - читать книгу онлайн бесплатно, автор Мендель Купер
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

then

return $E_PARAM_ERR

fi

lineno=$2

if [ ! $1 ]

then

echo "Утверждение ложно: \"$1\""

echo "Файл: \"$0\", строка: $lineno"

exit $E_ASSERT_FAILED

# else

# return

# и продолжить исполнение сценария.

fi

}

a=5

b=4

condition="$a -lt $b" # Сообщение об ощибке и завершение сценария.

# Попробуйте поменять условие "condition"

#+ на что нибудь другое и

#+ посмотреть -- что получится.

assert "$condition" $LINENO

# Сценарий продолжит работу только в том случае, если утверждение истинно.

# Прочие команды.

# ...

echo "Эта строка появится на экране только если утверждение истинно."

# ...

# Прочие команды.

# ...

exit 0

5. Ловушка на выхто в этом сценарии может быть неправильно (подсказка: после ключевого словоде.

Команда exit, в сценарии, порождает сигнал 0, по которому процесс завершает работу, т.е. -- сам сценарий [ 60 ] В соответствии с соглашениями, сигнал с номером 0 соответствует команде exit. . Часто бывает полезным по выходу из сценария выдать "распечатку" переменных.

Установка ловушек на сигналы

trap

Определяет действие при получении сигнала; так же полезна при отладке.

Сигнал ( signal ) -- это просто сообщение, передается процессу либо ядром, либо другим процессом, чтобы побудить процесс выполнить какие либо действия (обычно -- завершить работу). Например, нажатие на Control- C, вызывает передачу сигнала SIGINT, исполняющейся программе.

trap '' 2

# Игнорировать прерывание 2 (Control-C), действие по сигналу не указано.

trap 'echo "Control-C disabled."' 2

# Сообщение при нажатии на Control-C.

Пример 29-5. Ловушка на выходе

#!/bin/bash

trap 'echo Список переменных --- a = $a b = $b' EXIT

# EXIT -- это название сигнала, генерируемого при выходе из сценария.

a=39

b=36

exit 0

# Примечательно, что если закомментировать команду 'exit',

# то это никак не скажется на работе сценария,

# поскольку "выход" из сценария происходит в любом случае.

Пример 29-6. Удаление временного файла при нажатии на Control-C

#!/bin/bash

# logon.sh: Сценарий, написаный "на скорую руку", контролирует вход в режим on-line.

TRUE=1

LOGFILE=/var/log/messages

# Обратите внимание: $LOGFILE должен быть доступен на чтение (chmod 644 /var/log/messages).

TEMPFILE=temp.$$

# "Уникальное" имя для временного файла, где расширение в имени -- это pid процесса-сценария.

KEYWORD=address

# При входе, в файл /var/log/messages,

# добавляется строка "remote IP address xxx.xxx.xxx.xxx"

ONLINE=22

USER_INTERRUPT=13

CHECK_LINES=100

# Количество проверяемых строк.

trap 'rm -f $TEMPFILE; exit $USER_INTERRUPT' TERM INT

# Удалить временный файл, когда сценарий завершает работу по control-c.

echo

while [ $TRUE ] #Бесконечный цикл.

do

tail -$CHECK_LINES $LOGFILE> $TEMPFILE

# Последние 100 строк из системного журнала переписать во временный файл.

# Совершенно необходимо, т.к. новейшие версии ядер генерируют много сообщений при входе.

search=`grep $KEYWORD $TEMPFILE`

# Проверить наличие фразы "address",

# свидетельствующей об успешном входе.

if [ ! -z "$search" ] # Кавычки необходимы, т.к. переменная может содержать пробелы.

then

echo "On-line"

rm -f $TEMPFILE # Удалить временный файл.

exit $ONLINE

else

echo -n "." # ключ -n подавляет вывод символа перевода строки,

# так вы получите непрерывную строку точек.

fi

sleep 1

done

# Обратите внимание: если изменить содержимое переменной KEYWORD

# на "Exit", то сценарий может использоваться для контроля

# неожиданного выхода (logoff).

exit 0

# Nick Drage предложил альтернативный метод:

while true

do ifconfig ppp0 | grep UP 1> /dev/null && echo "соединение установлено" && exit 0

echo -n "." # Печать последовательности точек (.....), пока соединение не будет установлено.

sleep 2

done

# Проблема: Нажатия Control-C может оказаться недостаточным, чтобы завершить этот процесс.

# (Точки продолжают выводиться на экран.)

# Упражнение: Исправьте этот недостаток.

# Stephane Chazelas предложил еще одну альтернативу:

CHECK_INTERVAL=1

while ! tail -1 "$LOGFILE" | grep -q "$KEYWORD"

do echo -n .

sleep $CHECK_INTERVAL

done

echo "On-line"

# Упражнение: Найдите сильные и слабые стороны

# каждого из этих подходов.

Аргумент DEBUG, команды trap, заставляет сценарий выполнять указанное действие после выполнения каждой команды. Это можно использовать для трассировки переменных.

Пример 29-7. Трассировка переменной

#!/bin/bash

trap 'echo "VARIABLE-TRACE> $LINENO: \$variable = \"$variable\""' DEBUG

# Выводить значение переменной после исполнения каждой команды.

variable=29

echo "Переменная \"\$variable\" инициализирована числом $variable."

let "variable *= 3"

echo "Значение переменной \"\$variable\" увеличено в 3 раза."

# Конструкция "trap 'commands' DEBUG" может оказаться очень полезной

# при отладке больших и сложных скриптов,

# когда размещение множества инструкций "echo $variable"

# может потребовать достаточно большого времени.

# Спасибо Stephane Chazelas.

exit 0

Конструкция trap '' SIGNAL(две одиночных кавычки) -- запрещает SIGNAL для оставшейся части сценария. Конструкция trap SIGNAL-- восстанавливает действие сигнала SIGNAL. Эти конструкции могут использоваться для защиты критических участков сценария от нежелательного прерывания.

trap '' 2 # Сигнал 2 (Control-C) -- запрещен.

command

command

command

trap 2 # Разрешение реакции на Control-C

Глава 30. Необязательные параметры (ключи)

Необязательные параметры -- это дополнительные ключи (опции), которые оказывают влияние на поведение сценария и/или командной оболочки.

Команда set позволяет задавать дополнительные опции прямо внутри сценария. В том месте сценария, где необходимо, чтобы та или иная опция вступила в силу, вставьте такую конструкцию set -o option-name, или в более короткой форме -- set -option-abbrev. Эти две формы записи совершенно идентичны по своему действию.

#!/bin/bash

set -o verbose

# Вывод команд перед их исполнением.

#!/bin/bash

set -v

# Имеет тот же эффект, что и выше.

Для того, чтобы отключить действие той или иной опции, следует вставить конструкцию set +o option-name, или set +option-abbrev.

#!/bin/bash

set -o verbose

# Вывод команд перед их исполнением.

command

...

command

set +o verbose

# Запретить вывод команд перед их исполнением.

command

# команда не выводится.

set -v

# Вывод команд перед их исполнением.

command

...

command

set +v

# Запретить вывод команд перед их исполнением.

command

exit 0

Как вариант установки опций, можно предложить указывать их в заголовке сценария (в строке sha-bang) -- #! .

#!/bin/bash -x

#

# Далее следует текст сценария.

Так же можно указывать дополнительные ключи в командной строке, при запуске сценария. Некоторые из опций работают только если они заданы из командной строки, например -i -- ключ интерактивного режима работы скрипта.

bash -v script-name

bash -o verbose script-name

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

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Мендель Купер читать все книги автора по порядку

Мендель Купер - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


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


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x