Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание - [21]
>$ echo "test=2" >> tinyscript.sh
>$ chmod +x tinyscript.sh
>$ test=1
>$./tinyscript.sh
>$ echo $test
>1
Сценарий tinyscript.sh изменяет значение переменной test, но только внутри подоболочки, в которой он выполняется, то есть не затрагивая значение переменной test в текущей оболочке. Если выполнить сценарий с помощью точки (.), подключающей файл-источник, этот сценарий выполнится в текущей оболочке:
>$. tinyscript.sh
>$ echo $test
>2
Как нетрудно догадаться, если подключаемый таким способом сценарий выполнит команду exit 0, произойдет выход из текущей оболочки и окно программы терминала закроется, потому что операция подключения выполняет подключаемый сценарий в текущем процессе. В подоболочке команда exit произведет выход из нее, не вызвав остановки основного сценария. Это главное отличие и одна из причин, влияющих на выбор между командами. или source и exec (как будет показано ниже). Команда. фактически идентична команде source в bash; мы использовали точку просто потому, что такая форма подключения файлов более переносима между разными POSIX-совместимыми командными оболочками.
Код
Чтобы превратить функции, представленные в этой главе, в библиотеку для использования в других сценариях, извлеките все функции и необходимые глобальные переменные или массивы (то есть значения, общие для нескольких функций) и поместите их в один большой файл. Если назвать этот файл library.sh, его можно использовать, как показано в тестовом сценарии из листинга 1.28, для доступа ко всем функциям, написанным в этой главе, и их проверки.
Листинг 1.28. Подключение единой библиотеки с прежде реализованными функциями и их вызов
>··#!/bin/bash
>··# Сценарий тестирования библиотеки
>··# Сначала подключить (прочитать) файл library.sh.
>
>··initializeANSI # Настроить управляющие ANSI-последовательности.
>··# Проверить функцию validint.
>··echon "First off, do you have echo in your path? (1=yes, 2=no) "
>··read answer
>··while! validint $answer 1 2; do
>····echon "${boldon}Try again${boldoff}. Do you have echo "
>····echon "in your path? (1=yes, 2=no) "
>····read answer
>··done
>··# Проверить работу функции поиска команды в списке путей.
>··if! checkForCmdInPath "echo"; then
>····echo "Nope, can't find the echo command."
>··else
>····echo "The echo command is in the PATH."
>··fi
>··echo ""
>··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
Как это работает
Обратите внимание, что библиотека и все содержащиеся в ней функции включаются в окружение сценария выполнением единственной строки
.Этот очень удобный прием можно снова и снова использовать со многими сценариями, представленными в книге. Просто поместите подключаемый библиотечный файл в один из каталогов, перечисленных в переменной окружения PATH, чтобы команда. могла найти его.
Запуск сценария
Чтобы запустить тестовый сценарий, вызовите его из командной строки, подобно любому другому сценарию, как показано в листинге 1.29.
Результаты
Листинг 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 года. Но мы говорим о сценариях командной оболочки, а не о хитрости летоисчисления, так что оставим эту неточность без внимания.
№ 13. Отладка сценариев
Этот раздел не содержит настоящего сценария, но мы хотели бы потратить несколько страниц в книге, чтобы поговорить об основах отладки сценариев, потому что рано или поздно вы все равно столкнетесь с ошибками!
По нашему опыту, лучшая стратегия отладки — наращивать возможности сценариев постепенно. Некоторые программисты оптимистично надеются, что все заработает правильно с первого раза, но вы будете по-настоящему уверенно двигаться вперед, если начнете с малого. Кроме того, для трассировки переменных можно свободно использовать команды echo, а также запускать сценарии командой bash −x, чтобы обеспечить вывод отладочной информации, например:
>$ bash −x myscript.sh
Как вариант, можно добавить команду set −x перед началом отлаживаемого фрагмента и set +x — после него, как показано ниже:
>$ set −x
>$./myscript.sh
>$ set +x
Чтобы увидеть, как действуют флаги −x и +x, попробуем отладить простую игру «угадай число», представленную в листинге 1.30.
Применение виртуальных машин дает различным категориям пользователей — от начинающих до IT-специалистов — множество преимуществ. Это и повышенная безопасность работы, и простота развертывания новых платформ, и снижение стоимости владения. И потому не случайно сегодня виртуальные машины переживают второе рождение.В книге рассмотрены три наиболее популярных на сегодняшний день инструмента, предназначенных для создания виртуальных машин и управления ими: Virtual PC 2004 компании Microsoft, VMware Workstation от компании VMware и относительно «свежий» продукт — Parallels Workstation, созданный в компании Parallels.
Книга содержит подробные сведения о таких недокументированных или малоизвестных возможностях Windows XP, как принципы работы с программами rundll32.exe и regsvr32.exe, написание скриптов сервера сценариев Windows и создание INF-файлов. В ней приведено описание оснасток, изложены принципы работы с консолью управления mmc.exe и параметрами реестра, которые изменяются с ее помощью. Кроме того, рассмотрено большое количество средств, позволяющих выполнить тонкую настройку Windows XP.Эта книга предназначена для опытных пользователей и администраторов, которым интересно узнать о нестандартных возможностях Windows.
Реестр Windows является важной частью операционной системы, во многом определяющей ее работу. Изучив приведенный в этой книге материал, вы научитесь редактировать реестр Windows Vista по своему усмотрению, а также освоите многочисленные приемы оптимизации содержащихся в нем настроек операционной системы.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Iptables Tutorial 1.1.19Автор: (C) Oskar AndreassonCopyright (C) 2001-2002 by Oskar AndreassonПеревод: (C) Андрей КиселевПоследнюю версию документа можно получить по адресу: http://iptables-tutorial.frozentux.netfb2-документ отформатирован с использованием большого количества тегов и . Чтобы в «читалке» (в частности, Haali Reader) текст выглядел «красиво», настройте свойства соотвествующих стилей (emphasis и strong), изменив, например, их цвета или начертания. (прим. автора fb2-документа)
Курс лекций, включенных в брошюру, знакомит читателя с популярными свободными программами и системами, полезными при преподавании информатики в средней школе. В обзор вошли основы открытых операционных систем, сведения о пакете «офисных» программ OpenOffice.org, коммуникационном пакете Mozilla, графическом редакторе GIMP, современных графических средах GNOME и KDE и других программах.Для преподавателей информатики и методистов, а также для студентов и аспирантов соответствующих специальностей.© 2002-3, Максим Отставнов.© 2002, Андрей Добровольский (раздел 3.1).Использован текст лекций, публиковавшихся автором в приложении к газете «Первое сентября» «Информатика» (http://inf.1september.ru) в 2002-3 г., материалы брошюры «Прикладные свободные программы в школе» (М.: 2003 г.), а также фрагменты статей, ранее публиковавшихся в журналах «Компьютерра» и «Домашний компьютер».Материалы, представленные в этой книге, также доступны в Интернет на странице www.otstavnov.com/fsft на условиях Свободной лицензии ГНУ на документацию (GNU FDL)