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

Тут можно читать онлайн Дейв Тейлор - Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Питер, год 2017. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание
  • Автор:
  • Жанр:
  • Издательство:
    Питер
  • Год:
    2017
  • Город:
    СПб.
  • ISBN:
    978-5-496-03029-8
  • Рейтинг:
    5/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

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

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание - читать книгу онлайн бесплатно, автор Дейв Тейлор
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

····cat << EOF >&2

··Usage: $0 temperature[F|C|K]

··where the suffix:

····F······indicates input is in Fahrenheit (default)

····C······indicates input is in Celsius

····K······indicates input is in Kelvin

··EOF

····exit 1

··fi

картинка 185··unit="$(echo $1|sed −e 's/[-[: digit: ]]*//g' | tr '[: lower: ]' '[: upper: ]')"

картинка 186··temp="$(echo $1|sed −e 's/[^-[: digit: ]]*//g')"

··case ${unit:=F}

··in

··F) # Градусы Фаренгейта в градусы Цельсия: Tc = (F — 32) / 1.8

····farn="$temp"

картинка 187····cels="$(echo "scale=2;($farn — 32) / 1.8" | bc)"

····kelv="$(echo "scale=2;$cels + 273.15" | bc)"

····;;

··C) # Градусы Цельсия в градусы Фаренгейта: Tf = (9/5)*Tc+32

····cels=$temp

····kelv="$(echo "scale=2;$cels + 273.15" | bc)"

картинка 188····farn="$(echo "scale=2;(1.8 * $cels) + 32" | bc)"

····;;

картинка 189··K) # Градусы Цельсия = Kelvin — 273.15,

······#·· затем использовать формулу градусы Цельсия — > градусы Фаренгейта

····kelv=$temp

····cels="$(echo "scale=2; $kelv — 273.15" | bc)"

····farn="$(echo "scale=2; (1.8 * $cels) + 32" | bc)"

····;;

····*)

····echo "Given temperature unit is not supported"

····exit 1

··esac

··echo "Fahrenheit = $farn"

··echo "Celsius = $cels"

··echo "Kelvin = $kelv"

··exit 0

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

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

Сценарии командной оболочки Linux OS X и Unix 2е издание - изображение 190

Преобразованную в последовательность для передачи калькулятору bc и вычисления, эту формулу можно видеть в строке картинка 191. Обратное преобразование из градусов Цельсия в градусы Фаренгейта реализовано в строке картинка 192. Этот сценарий также переводит температуру из градусов Цельсия в градусы Кельвина картинка 193. Он наглядно демонстрирует одну важную причину использовать мнемонические имена для переменных: код становится проще для чтения и отладки.

Еще один интересный аспект сценария — регулярные выражения, наиболее замысловатое из которых находится в строке картинка 194. Понять эту строку проще, если развернуть операцию подстановки, выполняемую sed. Подстановка всегда имеет вид s/old/new/ ; в данном случае шаблон old описывает строку, начинающуюся с ноля или более дефисов (-), за которыми следует любое количество цифр (как вы помните, [: digit: ] — это форма записи класса символов в ANSI, представляющего собой произвольную цифру, а звездочка (*) обозначает ноль или более вхождений предыдущего шаблона). Шаблон new описывает, чем заменить совпадение с шаблоном old , и в данном случае это всего лишь //, то есть пустой шаблон. Его удобно использовать, когда требуется просто удалить совпадения с шаблоном old . Данная операция подстановки фактически удаляет все цифры и дефисы так, что ввод -31f превращается в f и мы получаем возможность определить шкалу измерения температуры. После этого команда tr нормализует результат, преобразуя его в верхний регистр, то есть строка -31f, например, превращается в F.

Другое выражение sed выполняет противоположную операцию картинка 195: оно удаляет все, что не является частью числа, используя оператор ^ для инвертирования совпадения с любым символом в классе [: digit: ]. (В большинстве языков программирования инвертирование выполняет оператор!.) В результате получается значение для преобразования с применением соответствующей формулы.

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

Сценарий имеет простой и понятный формат входных данных, хотя и необычный для команд Unix. Сценарию передается числовое значение с необязательным символом в конце, обозначающим шкалу; в отсутствие этого символа предполагается, что значение температуры представлено в градусах Фаренгейта.

Чтобы узнать температуру в градусах Цельсия и Кельвина, эквивалентную 0° Фаренгейта, введите 0F. Чтобы узнать температуру в градусах Цельсия и Фаренгейта, эквивалентную 100° Кельвина, введите 100K. А чтобы узнать температуру в градусах Кельвина и Фаренгейта, эквивалентную 100° Цельсия, введите 10 °C.

Похожий прием использования односимвольного обозначения в конце мы увидим в главе 7, в сценарии № 60, который выполняет преобразования между валютами.

Результаты

В листинге 3.9 показано несколько примеров преобразования температур.

Листинг 3.9.Тестирование сценария convertatemp несколькими преобразованиями

$ convertatemp 212

Fahrenheit = 212

Celsius = 100.00

Kelvin = 373.15

$ convertatemp 10 °C

Fahrenheit = 212.00

Celsius = 100

Kelvin = 373.15

$ convertatemp 100K

Fahrenheit = -279.67

Celsius = -173.15

Kelvin = 100

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

В сценарий можно добавить поддержку нескольких флагов, чтобы ограничить вывод единственным результатом. Например, команда convertatemp −c 100F выводила бы только значение в градусах Цельсия, эквивалентное 100° Фаренгейта. Это помогло бы также упростить использование данного сценария внутри других.

№ 25. Вычисление платежей по кредиту

Другой распространенный вид вычислений, который наверняка пригодится пользователям — оценка платежей по кредиту. Сценарий в листинге 3.10 помогает также ответить на вопрос: «Куда потратить премию?», — и еще один, связанный с ним: «Могу ли я наконец позволить себе купить новую Tesla?».

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

Код

Листинг 3.10.Сценарий loancalc

··#!/bin/bash

··# loancalc — По заданной сумме кредита, процентной ставке

··#·· и продолжительности (в годах), вычисляет суммы платежей

··# Формула: M = P * (J / (1 — (1 + J) ^ −N)),

··#·· где P = сумма кредита, J = месячная процентная ставка, N = протяженность·· #·· (месяцев).

··# Обычно пользователи вводят P, I (годовая процентная ставка) и L (протяженность·· #·· в годах).

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

Интервал:

Закладка:

Сделать


Дейв Тейлор читать все книги автора по порядку

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




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


Отзывы читателей о книге Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание, автор: Дейв Тейлор. Читайте комментарии и мнения людей о произведении.


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

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