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

··echon "Enter a year you think might be a leap year: "

··read year

··# Убедиться, что значение года находится в диапазоне между 1 и 9999,

··#·· с помощью validint, передав ей минимальное и максимальное значения.

··while! validint $year 1 9999; do

····echon "Please enter a year in the ${boldon}correct${boldoff} format: "

····read year

··done

··# Проверить, является ли год високосным.

··if isLeapYear $year; then

····echo "${greenf}You're right! $year is a leap year.${reset}"

··else

····echo "${redf}Nope, that's not a leap year.${reset}"

··fi

··exit 0

<p>Как это работает</p>

Обратите внимание, что библиотека и все содержащиеся в ней функции включаются в окружение сценария выполнением единственной строки .

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

<p>Запуск сценария</p>

Чтобы запустить тестовый сценарий, вызовите его из командной строки, подобно любому другому сценарию, как показано в листинге 1.29.

<p>Результаты</p>

Листинг 1.29. Запуск сценария library-test

$ library-test

First off, do you have echo in your PATH? (1=yes, 2=no) 1

The echo command is in the PATH.

Enter a year you think might be a leap year: 432423

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

Please enter a year in the correct format: 432

You’re right! 432 is a leap year.

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

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

<p>№ 13. Отладка сценариев</p>

Этот раздел не содержит настоящего сценария, но мы хотели бы потратить несколько страниц в книге, чтобы поговорить об основах отладки сценариев, потому что рано или поздно вы все равно столкнетесь с ошибками!

По нашему опыту, лучшая стратегия отладки — наращивать возможности сценариев постепенно. Некоторые программисты оптимистично надеются, что все заработает правильно с первого раза, но вы будете по-настоящему уверенно двигаться вперед, если начнете с малого. Кроме того, для трассировки переменных можно свободно использовать команды echo, а также запускать сценарии командой bash −x, чтобы обеспечить вывод отладочной информации, например:

$ bash −x myscript.sh

Как вариант, можно добавить команду set −x перед началом отлаживаемого фрагмента и set +x — после него, как показано ниже:

$ set −x

$./myscript.sh

$ set +x

Чтобы увидеть, как действуют флаги −x и +x, попробуем отладить простую игру «угадай число», представленную в листинге 1.30.

<p>Код</p>

Листинг 1.30. Сценарий hilow, возможно содержащий несколько ошибок, который нужно отладить.

··#!/bin/bash

··# hilow — Простая игра "угадай число"

··biggest=100················# Максимальное возможное число

··guess=0····················# Число, предложенное игроком

··guesses=0··················# Количество попыток

··number=$(($$ % $biggest) # Случайное число от 1 до $biggest

··echo "Guess a number between 1 and $biggest"

··while ["$guess" −ne $number]; do

····/bin/echo −n "Guess?"; read answer

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

······echo"… bigger!"

····elif ["$guess" −gt $number]; then

······echo"… smaller!

····fi

····guesses=$(($guesses + 1))

··done

Перейти на страницу:

Все книги серии Для профессионалов

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

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

Брендон Перри , Дейв Тейлор

Программирование, программы, базы данных

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных