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

Здесь есть возможность читать онлайн «Мендель Купер - Искусство программирования на языке сценариев командной оболочки» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

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

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

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

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Искусство программирования на языке сценариев командной оболочки», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

echo "Удаление файлов в каталоге $TargetDirectory."

if [ "$PWD" != "$TargetDirectory" ]

then # Защита от случайного удаления файлов не в том каталоге.

echo "Неверный каталог!"

echo "Переменная $PWD указывает на другой каталог!"

exit $E_WRONG_DIRECTORY

fi

rm -rf *

rm .[A-Za-z0-9]* # удалить "скрытые" файлы (начинающиеся с ".")

# rm -f .[^.]* ..?* удалить файлы, чьи имена начинаются с нескольких точек.

# (shopt -s dotglob; rm -f *) тоже работает верно.

# Спасибо S.C. за замечание.

# Имена файлов могут содержать любые символы из диапазона 0-255, за исключением "/".

# Оставляю вопрос удаления файлов с "необычными" символами для самостоятельного изучения.

# Здесь можно вставить дополнительные действия, по мере необходимости.

echo

echo "Конец."

echo "Файлы, из каталога $TargetDirectory, удалены."

echo

exit 0

$REPLY

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

#!/bin/bash

echo

echo -n "Ваше любимое растение? "

read

echo "Ваше любимое растение: $REPLY."

# REPLY хранит последнее значение, прочитанное командой "read" тогда, и только тогда

#+ когда команде "read" не передается имя переменной.

echo

echo -n "Ваш любимый фрукт? "

read fruit

echo "Ваш любимый фрукт $fruit."

echo "но..."

echo "Значение переменной \$REPLY осталось равным $REPLY."

# Переменная $REPLY не была перезаписана потому, что

# следующей команде "read", в качестве аргумента была передана переменная $fruit

echo

exit 0

$SECONDS

Время работы сценария в секундах.

#!/bin/bash

# Автор: Mendel Cooper

# Дополнен переводчиком.

#

TIME_LIMIT=10

INTERVAL=1

echo

echo "Для прерывания работы сценария, ранее чем через $TIME_LIMIT секунд, нажмите Control-C."

echo

while [ "$SECONDS" -le "$TIME_LIMIT" ]

do

# Оригинальный вариант сценария содержал следующие строки

# if [ "$SECONDS" -eq 1 ]

# then

# units=second

# else

# units=seconds

# fi

#

# Однако, из-за того, что в русском языке для описания множественного числа

# существует большее число вариантов, чем в английском,

# переводчик позволил себе смелость несколько подправить сценарий

# (прошу ногами не бить! ;-) )

# === НАЧАЛО БЛОКА ИЗМЕНЕНИЙ, ВНЕСЕННЫХ ПЕРЕВОДЧИКОМ ===

let "last_two_sym = $SECONDS - $SECONDS / 100 * 100" # десятки и единицы

if [ "$last_two_sym" -ge 11 -a "$last_two_sym" -le 19 ]

then

units="секунд" # для чисел, которые заканчиваются на "...надцать"

else

let "last_sym = $last_two_sym - $last_two_sym / 10 * 10" # единицы

case "$last_sym" in

"1" )

units="секунду" # для чисел, заканчивающихся на 1

;;

"2" | "3" | "4" )

units="секунды" # для чисел, заканчивающихся на 2, 3 и 4

;;

* )

units="секунд" # для всех остальных (0, 5, 6, 7, 8, 9)

;;

esac

fi

# === КОНЕЦ БЛОКА ИЗМЕНЕНИЙ, ВНЕСЕННЫХ ПЕРЕВОДЧИКОМ ===

echo "Сценарий отработал $SECONDS $units."

# В случае перегруженности системы, скрипт может перескакивать через отдельные

#+ значения счетчика

sleep $INTERVAL

done

echo -e "\a" # Сигнал!

exit 0

$SHELLOPTS

список допустимых опций интерпретатора shell. Переменная доступна только для чтения.

bash$ echo $SHELLOPTS

braceexpand:hashall:histexpand:monitor:history:interactive-comments:emacs

$SHLVL

Уровень вложенности shell. Если в командной строке

echo $SHLVL

дает 1, то в сценарии значение этой переменной будет больше на 1, т.е. 2.

$TMOUT

Если переменная окружения $TMOUT содержит ненулевое значение, то интерпретатор будет ожидать ввод не более чем заданное число секунд, что, в первичном приглашении (см. описание PS1 выше), может привести к автоматическому завершению сеанса работы.

картинка 45К сожалению это возможно только во время ожидания ввода с консоли или в окне терминала. А как было бы здорово, если бы можно было использовать эту внутреннюю переменную, скажем в комбинации с командой read! Но в данном контексте эта переменная абсолютно не применима и потому фактически бесполезна в сценариях. (Есть сведения о том, что в ksh время ожидания ввода командой readможно ограничить.)

Организация ограничения времени ожидания ввода от пользователя в сценариях возможна, но это требут довольно сложных махинаций. Как один из вариантов, можно предложить организовать прерывание цикла ожидания по сигналу. Но это потребует написание функции обработки сигналов командой trap (см. Пример 29-5).

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

Интервал:

Закладка:

Сделать

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

Представляем Вашему вниманию похожие книги на «Искусство программирования на языке сценариев командной оболочки» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


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

Обсуждение, отзывы о книге «Искусство программирования на языке сценариев командной оболочки» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x