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

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

Интервал:

Закладка:

Сделать

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

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

Результаты

Листинг 1.6.Тестирование сценария normdate

$ normdate 8 3 62

normdate: expected 4-digit year value.

$ normdate 8 3 1962

Aug 3 1962

$ normdate AUGUST 03 1962

Aug 03 1962

Обратите внимание, что этот сценарий нормализует только представление месяца; представление дня (в том числе с ведущими нулями) и года не изменяется.

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

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

Одно из изменений, которые можно внедрить уже сейчас, касается включения поддержки дат в форматах MM/DD/YYYY и MM-DD-YYYY, для чего достаточно добавить следующий код непосредственно перед первым условным оператором:

if [$# −eq 1]; then # Чтобы компенсировать форматы с / и -

··set −$(echo $1 | sed 's/[\/\-]/ /g')

fi

С этим изменением сценарий позволяет вводить и нормализовать даты в следующих распространенных форматах:

$ normdate 6-10-2000

Jun 10 2000

$ normdate March-11-1911

Mar 11 1911

$ normdate 8/3/1962

Aug 3 1962

Если вы прочитаете код очень внимательно, то заметите, что в нем можно также усовершенствовать проверку поля с номером года, не говоря уже о поддержке разных международных форматов представления дат. Мы оставляем это вам как упражнение для самостоятельных исследований!

№ 4. Удобочитаемое представление больших чисел

Программисты часто допускают типичную ошибку, отображая результаты вычислений без предварительного форматирования. Пользователям сложно определить, например, сколько миллионов содержится в числе 43 245 435, не подсчитав количество цифр справа налево и не добавив мысленно запятые после каждого третьего знака. Сценарий в листинге 1.7 выводит большие числа в удобочитаемом формате.

Код

Листинг 1.7.Сценарий nicenumber форматирует большие числа, делая их удобочитаемыми

··#!/bin/bash

··# nicenumber — Отображает переданное число в формате представления с запятыми.

··#·· Предполагает наличие переменных DD (decimal point delimiter — разделитель

··#·· дробной части) и TD (thousands delimiter — разделитель групп разрядов).

··#·· Создает переменную nicenum с результатом, а при наличии второго аргумента

··#·· дополнительно выводит результат в стандартный вывод.

··nicenumber()

··{

····# Обратите внимание: предполагается, что для разделения дробной и целой

····#·· части во входном значении используется точка.

····#·· В выходной строке в качестве такого разделителя используется точка, если

····#·· пользователь не определил другой символ с помощью флага −d.

картинка 32····integer=$(echo $1 | cut −d. -f1) # Слева от точки

картинка 33····decimal=$(echo $1 | cut −d. -f2) # Справа от точки

····# Проверить присутствие дробной части в числе.

····if ["$decimal"!= "$1"]; then

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

······result="${DD:= '.'}$decimal"

····fi

··thousands=$integer

картинка 34··while [$thousands −gt 999]; do

картинка 35····remainder=$(($thousands % 1000)) # Три последние значимые цифры

····# В 'remainder' должно быть три цифры. Требуется добавить ведущие нули?

····while [${#remainder} −lt 3]; do # Добавить ведущие нули

······remainder="0$remainder"

····done

картинка 36····result="${TD:=","}${remainder}${result}" # Конструировать справа налево

картинка 37····thousands=$(($thousands / 1000)) # Оставить остаток, если есть

··done

··nicenum="${thousands}${result}"

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

····echo $nicenum

··fi

}

DD="." # Десятичная точка для разделения целой и дробной части

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

Интервал:

Закладка:

Сделать

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

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


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

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

x