Дейв Тейлор - Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание

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

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание: краткое содержание, описание и аннотация

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

Сценарии командной оболочки помогают системным администраторам и программистам автоматизировать рутинные задачи с тех самых пор, как появились первые компьютеры. С момента выхода первого издания этой книги в 2004 году многое изменилось, однако командная оболочка bash только упрочила свои лидирующие позиции. Поэтому умение использовать все ее возможности становится насущной необходимостью для системных администраторов, инженеров и энтузиастов. В этой книге описываются типичные проблемы, с которыми можно столкнуться, например, при сборке программного обеспечения или координации действий других программ. А решения даются так, что их легко можно взять за основу и экстраполировать на другие схожие задачи.
Цель этой книги — продемонстрировать практические приемы программирования сценариев на bash и познакомить с самыми распространенными утилитами на коротких и компактных примерах, не вдаваясь в излишние подробности. Экспериментируйте с этими сценариями — ломайте, исправляйте и приспосабливайте их под свои нужды, чтобы понять, как они работают. Только так вы сможете решать самые сложные задачи.

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание — читать онлайн бесплатно полную книгу (весь текст) целиком

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

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

Интервал:

Закладка:

Сделать

Код

Листинг 1.9.Сценарий validint

#!/bin/bash

# validint — Проверяет целые числа, поддерживает отрицательные значения

validint()

{

··# Проверяет первое значение и сравнивает с минимальным значением $2 и/или

··#·· с максимальным значением $3, если они заданы. Если проверяемое значение

··#·· вне заданного диапазона или не является допустимым целым числом,

··#·· возвращается признак ошибки.

··number="$1"; min="$2"; max="$3"

картинка 48··if [-z $number]; then

····echo "You didn't enter anything. Please enter a number." >&2

····return 1

··fi

··# Первый символ — знак "минус"?

картинка 49··if ["${number%${number#?}}" = "-"]; then

····testvalue="${number#?}" # Оставить для проверки все, кроме первого символа

··else

····testvalue="$number"

··fi

··# Удалить все цифры из числа для проверки.

картинка 50··nodigits="$(echo $testvalue | sed 's/[[: digit: ]]//g')"

··# Проверить наличие нецифровых символов.

··if [! -z $nodigits]; then

····echo "Invalid number format! Only digits, no commas, spaces, etc." >&2

····return 1

··fi

картинка 51··if [! -z $min]; then

····# Входное значение меньше минимального?

····if ["$number" −lt "$min"]; then

······echo "Your value is too small: smallest acceptable value is $min." >&2

······return 1

····fi

··fi

··if [! -z $max]; then

····# Входное значение больше максимального?

····if ["$number" −gt "$max"]; then

······echo "Your value is too big: largest acceptable value is $max." >&2

······return 1

····fi

··fi

··return 0

}

Как это работает

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

Сначала функция проверяет ввод непустого значения картинка 52(еще один пример, когда важно использовать двойные кавычки, чтобы предотвратить появление сообщения об ошибке в случае ввода пустой строки). Затем, в строке картинка 53, она проверяет наличие знака «минус» и в строке картинка 54удаляет из введенного значения все цифры. Если в результате получилась непустая строка, значит, введено значение, не являющееся целым числом, и функция возвращает признак ошибки.

Если введенное значение допустимо, оно сравнивается с минимальным и максимальным значениями картинка 55. Наконец, в случае ошибки функция возвращает 1 и 0 — в случае успеха.

Запуск сценария

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

Листинг 1.10.Дополнительная поддержка, превращающая сценарий в самостоятельную команду

# Проверка ввода

if validint "$1" "$2" "$3"; then

····echo "Input is a valid integer within your constraints."

fi

Результаты

После добавления кода из листинга 1.10, сценарий можно использовать, как показано в листинге 1.11:

Листинг 1.11.Тестирование сценария validint

$ validint 1234.3

Invalid number format! Only digits, no commas, spaces, etc.

$ validint 103 1 100

Your value is too big: largest acceptable value is 100.

$ validint -17 0 25

Your value is too small: smallest acceptable value is 0.

$ validint -17 -20 25

Input is a valid integer within your constraints.

Усовершенствование сценария

Обратите внимание на строку картинка 56, которая проверяет, не является ли первый символ знаком «минус»:

if ["${number%${number#?}}" = "-"]; then

Если первый символ действительно является знаком «минус», переменной testvalue присваивается числовая часть значения. Затем из этого неотрицательного значения удаляются все цифры и выполняется следующая проверка.

В данном случае велик соблазн использовать логический оператор И (-a), чтобы объединить выражения и избавиться от вложенных инструкций if. Например, на первый взгляд кажется, что следующий код должен работать:

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

Интервал:

Закладка:

Сделать

Похожие книги на «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание»

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


Отзывы о книге «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание»

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

x