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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

 # Желательно, чтобы пользовательские переменные не начинались с символа подчеркивания.

 # Так обычно начинаются системные переменные.

 Используйте смысловые имена для кодов завершения.

 E_WRONG_ARGS=65

 ...

 ...

 exit $E_WRONG_ARGS

См. так же Приложение C.

 Разделяйте большие сложные сценарии на серию более коротких и простых модулей. Пользуйтесь функциями. См. Пример 34-4.

 Не пользуйтесь сложными конструкциями, если их можно заменить простыми.

 COMMAND

 if [ $? -eq 0 ]

 ...

 # Избыточно и неинтуитивно.

 if COMMAND

 ...

 # Более понятно и коротко.

... читая исходные тексты сценариев на Bourne shell (/bin/sh). Я был потрясен тем, насколько непонятно и загадочно могут выглядеть очень простые алгоритмы из-за неправильного оформления кода. Я не раз спрашивал себя: "Неужели кто-то может гордиться таким кодом?"

Landon Noll

Глава 33. Разное

Практически никто не знает грамматики Bourne shell-а. Даже изучение исходных текстов не дает ее полного понимания.

Tom Duff

33.1. Интерактивный и неинтерактивный режим работы

В интеракивном режиме, оболочка читает команды, вводимые пользователем, с устройства tty. Кроме того, такая оболочка считывает конфигурационные файлы на запуске, выводит строку приглашения к вводу (prompt), и, по-умолчанию, разрешает управление заданиями. Пользователь имеет возможность взаимодействия с оболочкой.

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

#!/bin/bash

MY_PROMPT='$ '

while :

do

echo -n "$MY_PROMPT"

read line

eval "$line"

done

exit 0

# Этот сценарий, как иллюстрация к вышесказанному, предоставлен

# Stephane Chazelas (спасибо).

Будем считать интерактивным такой сценарий, который может принимать ввод от пользователя, обычно с помощью команды read (см. Пример 11-2). В "реальной жизни" все намного сложнее. Пока же, будем придерживаться предположения о том, что интерактивный сценарий ограничен рамками tty, с которого сценарий был запущен пользователемa, т.е консоль или окно xterm.

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

Неинтерактивные сценарии прекрасно могут работать в фоне, в то время, как интерактивные -- подвисают, останавливаясь на операциях, ожидающих ввода пользователя. Сложности, возникающие с запуском интерактивных сценариев в фоновом режиме, могут быть преодолены с помощью expect-сценария или встроенного документа. В простейших случаях, можно организовать перенаправление ввода из файла в команду read( read variable ). Эти приемы позволят создавать сценарии, которые смогут работать как в интерактивном, так и в неинтерактивном режимах.

Если внутри сценария необходимо проверить режим работы -- интерактивный или неинтерактивный, это можно сделать проверкой переменной окружения $PS1.

if [ -z $PS1 ] # интерактивный режим?

then

# неинтерактивный

...

else

# интерактивный

...

fi

Еще один способ -- проверка установки флага "i" в переменной $-.

case $- in

*i*) # интерактивный режим

;;

*) # неинтерактивный режим

;;

# (Из "UNIX F.A.Q.," 1993)

Сценарий может принудительно запускаться в интерактивном режиме, для этого необходимо указать ключ -i в строке-заголовке #!/bin/bash -i. Однако вы должны помнить о том, что в таких случаях сценарий может выдавать сообщения об ошибках даже тогда, когда ошибок, по сути, нет.

33.2. Сценарии-обертки

"Обертки" -- это сценарии, которые содержат один или несколько вызовов системных команд или утилит, с длинным списком параметров. Такой прием освобождает пользователя от необходимости вводить вручную сложные и длинные команды из командной строки. Он особенно полезен при работе с sed и awk.

Сценарии sedили awk, как правило вызываются в форме: sed -e 'commands' или awk 'commands' . "Заворачивая" такие вызовы в сценарий на языке командной оболочки, мы делаем их использование более простым для конечного пользователя. Кроме того, этот прием позволяет комбинировать вызовы sedи awk, например в конвейере, позволяя передавать данные с выхода одной утилиты на вход другой.

Пример 33-1. сценарий-обертка

#!/bin/bash

# Этот простой сценарий удаляет пустые строки из текстового файла.

# Проверка входных аргументов не производится.

#

# Однако вы можете дополнить сценарий такой проверкой,

# добавив нечто подобное:

# if [ -z "$1" ]

# then

# echo "Порядок использования: `basename $0` текстовый_файл"

# exit 65

# fi

# Для выполнения этих же действий,

# из командной строки можно набрать

# sed -e '/^$/d' filename

sed -e /^$/d "$1"

# '-e' -- означает команду "editing" (правка), за которой следуют необязательные параметры.

# '^' -- с начала строки, '$' -- до ее конца.

# Что соответствует строкам, которые не содержат символов между началом и концом строки,

#+ т.е. -- пустым строкам.

# 'd' -- команда "delete" (удалить).

# Использование кавычек дает возможность

#+ обрабатывать файлы, чьи имена содержат пробелы.

exit 0

Пример 33-2. Более сложный пример сценария-обертки

#!/bin/bash

# "subst", Сценарий замены по шаблону

# т.е., "subst Smith Jones letter.txt".

ARGS=3

E_BADARGS=65 # Неверное число аргументов.

if [ $# -ne "$ARGS" ]

# Проверка числа аргументов.

then

echo "Проядок использования: `basename $0` old-pattern new-pattern filename"

exit $E_BADARGS

fi

old_pattern=$1

new_pattern=$2

if [ -f "$3" ]

then

file_name=$3

else

echo "Файл \"$3\" не найден."

exit $E_BADARGS

fi

# Здесь, собственно, выполняется сама работа по поиску и замене.

sed -e "s/$old_pattern/$new_pattern/g" $file_name

# 's' -- команда "substitute" (замены),

# а /pattern/ -- задает шаблон искомого текста.

# "g" -- флаг "global" (всеобщий), означает "выполнить подстановку для *каждого*

# обнаруженного $old_pattern во всех строках, а не только в первой строке.

exit 0 # При успешном завершении сценария -- вернуть 0.

Пример 33-3. Сценарий-обертка вокруг сценария awk

#!/bin/bash

# Суммирует числа в заданном столбце из заданного файла.

ARGS=2

E_WRONGARGS=65

if [ $# -ne "$ARGS" ] # Проверка числа аргументов.

then

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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