Дейв Тейлор - Сценарии командной оболочки. 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-е издание», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

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

Интервал:

Закладка:

Сделать

if [! -z $min −a "$number" −lt "$min"]; then

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

··exit 1

fi

Но он не работает, потому что, даже если первое выражение, слева от оператора И, вернет ложное значение, нет никаких гарантий, что вторая проверка не будет выполнена (хотя в большинстве других языков программирования получилось бы именно так). То есть вы рискуете столкнуться со множеством ошибок из-за сравнения недействительных или неожиданных значений. Так быть не должно, но таковы реалии программирования на языке командной оболочки.

№ 6. Проверка ввода: вещественные числа

Проверка вещественных значений (с плавающей точкой) при ограниченных возможностях командной оболочки на первый взгляд кажется сложнейшей задачей, но представьте, что вещественное число состоит из двух целых чисел, разделенных десятичной точкой. Добавьте сюда возможность сослаться на другой сценарий (validint), и вы удивитесь, насколько короткой бывает проверка вещественных значений. Сценарий в листинге 1.12 предполагает, что находится в одном каталоге со сценарием validint.

Код

Листинг 1.12.Сценарий validfloat

#!/bin/bash

# validfloat — Проверяет допустимость вещественного значения.

#·· Имейте в виду, что сценарий не распознает научную форму записи (1.304e5).

# Чтобы проверить вещественное значение, его нужно разбить на две части:

#·· целую и дробную. Первая часть проверяется как обычное целое число,

#·· а дробная — как положительное целое число. То есть число -30.5 оценивается

#·· как допустимое, а -30.-8 нет.

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

# Довольно просто.

. validint

validfloat()

{

··fvalue="$1"

··# Проверить наличие десятичной точки.

картинка 57··if [! -z $(echo $fvalue | sed 's/[^.]//g')]; then

····# Извлечь целую часть числа, слева от десятичной точки.

картинка 58····decimalPart="$(echo $fvalue | cut −d. -f1)"

····# Извлечь дробную часть числа, справа от десятичной точки.

картинка 59····fractionalPart="${fvalue#*\.}"

····# Проверить целую часть числа, слева от десятичной точки

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

······# "!" инвертирует логику проверки, то есть ниже проверяется

······#·· "если НЕ допустимое целое число"

······if! validint "$decimalPart" "" ""; then

········return 1

······fi

····fi

····# Теперь проверим дробную часть.

····# Прежде всего, она не может содержать знак "минус" после десятичной точки,

····#·· например: 33.-11, поэтому проверим знак '-’ в дробной части.

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

······echo "Invalid floating-point number: '-' not allowed \

········after decimal point." >&2

······return 1

····fi

····if ["$fractionalPart"!= ""]; then

······# Если дробная часть НЕ является допустимым целым числом…

······if! validint "$fractionalPart" "0" ""; then

········return 1

······fi

····fi

··else

····# Если все значение состоит из единственного знака "-",

····#·· это недопустимое значение.

картинка 62····if ["$fvalue" = "-"]; then

······echo "Invalid floating-point format." >&2

······return 1

····fi

····# В заключение проверить, что оставшиеся цифры представляют

····# допустимое целое число.

····if! validint "$fvalue" "" ""; then

······return 1

····fi

··fi

··return 0

}

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

Сценарий сначала проверяет наличие десятичной точки во входном значении картинка 63. Если точки в числе нет, это не вещественное число. Далее для анализа извлекаются целая картинка 64и дробная картинка 65части числа. Затем, в строке картинка 66, сценарий проверяет, является ли целая часть ( слева от десятичной точки) допустимым целым числом. Следующая последовательность проверок сложнее, потому что требуется проверить картинка 67отсутствие дополнительного знака «минус» (чтобы исключить такие странные числа, как 17. –30) и убедиться, что дробная часть ( справа от десятичной точки) является допустимым целым числом.

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

Интервал:

Закладка:

Сделать

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

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


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

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

x