В основном сложность данного сценария обусловлена желанием определить часовой пояс по введенному пользователем названию области, для которого не найдено прямого совпадения в базе данных часовых поясов. Данные хранятся в ней в виде столбцов
Даже при том, что присваивание TZ="Casablanca" приводит к неудаче поиска географической области, город Casablanca (Касабланка) действительно существует в базе данных. Проблема в том, что для успешного определения часового пояса необходимо использовать правильное сочетание названия области и города
С другой стороны, данный сценарий способен самостоятельно найти файл
Отличный справочник по часовым поясам можно найти по адресу: http://www.twinsun.com/tz/tz-link.htm.
Запуск сценария
Чтобы узнать текущее время в географической области или в городе, передайте сценарию timein аргумент с названием области или города. Если вы знаете и область, и город, передайте их в формате
Результаты
Листинг 2.20. Тестирование сценария timein с разными часовыми поясами
$ timein
It’s Wednesday, April 5, 2017, at 4:00 PM in UTC
$ timein London
It’s Wednesday, April 5, 2017, at 5:00 PM in Europe/London
$ timein Brazil
The region "Brazil" has more than one time zone. Please use 'list’
to see all known regions and time zones.
$ timein Pacific/Honolulu
It’s Wednesday, April 5, 2017, at 6:00 AM in Pacific/Honolulu
$ timein WET
It’s Wednesday, April 5, 2017, at 5:00 PM in WET
$ timein mycloset
Can’t find an exact match for "mycloset". Please use 'list'
to see all known regions and time zones.
Усовершенствование сценария
Возможность узнать время в любом часовом поясе по всему миру очень полезна, особенно для администраторов, управляющих глобальными сетями. Но иногда требуется всего лишь узнать
Задействуя оба аргумента, сценарий мог бы определять текущее время в обоих часовых поясах и затем выводить разницу между ними. Но имейте в виду, что двухчасовая разница между двумя часовыми поясами может быть на два часа
Глава 3. Создание утилит
Одна из основных целей создания сценариев командной оболочки — перенести сложные команды в файл, где их легко воспроизвести и изменить. Поэтому неудивительно, что на протяжении всей книги рассматриваются пользовательские команды. Но удивительно, что нам не требуется писать обертки для каждой отдельной команды в системах Linux, Solaris и OS X.
Linux/Unix — единственная из основных операционных систем, где можно решить, что флаги по умолчанию не отвечают вашим потребностям, и исправить положение несколькими нажатиями клавиш или сымитировать поведение понравившейся утилиты из другой операционной системы, определив псевдоним или написав сценарий длиной в десяток строк. Именно это делает систему Unix такой дружелюбной, и именно это вдохновило нас написать книгу, которую вы держите в руках!
№ 22. Утилита для напоминания