Сценарии оболочки

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

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

Для файлов сценариев оболочки Bash принято устанавливать расширение .sh.

Сценарии оболочки могут быть исполнены двумя различными путями.

r Имя файла сценария можно указать в качестве аргумента командной стро- ки при явном запуске исполняемого файла оболочки, например, bash. В этом случае файл сценария должен быть доступен для чтения.

r Если в сценарии содержится неявный вызов оболочки, а файл сценария доступен для чтения и исполнения, то сценарий можно запустить так же, как и обычные системные команды.

Далее приведен пример запуска сценария путем явного вызова оболочки и указания имени сценария в качестве аргумента (пример 10.1).


 

Пример 10.1. Запуск сценария с явным вызовом оболочки

 

$ bash myscr1.sh Privet!

 

При отладке сценариев исключительно важны опции -v и -x bash. Опция

-v переводит оболочку в режим подробного информирования о работе. В этом режиме отображаются команды сценария перед их интерпретацией. Опция -x отображает результаты интерпретации команд. При неявном указа- нии оболочки в первой строке сценария должна находиться строка с полным именем исполняемого файла оболочки (пример 10.2).

 

Пример 10.2. Неявный вызов оболочки

 

$ cat myscr1.sh

#!/bin/bash echo 'Privet!'

 

Строка #!/bin/bash указывает, с помощью какой оболочки должен быть ин- терпретирован и выполнен сценарий.

Запуск сценария при неявном вызове оболочки возможен, если на файл сце- нария имеются разрешения для чтения и исполнения (пример 10.3).

 

Пример 10.3. Установка прав на исполнение сценария

 

$ chmod a+rx myscr1.sh

$ ./myscr1.sh Privet!

 

Обратите внимание на то, что нахождение исполняемого файла в текущем каталоге не означает возможности его запуска без указания пути к нему. При отсутствии имени текущего каталога в переменной PATH имя текущего ката- лога (точка) должно быть указано в пути к файлу сценария — ./.

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


 

При необходимости выполнения сценария в контексте вызывающего сцена- рия (оболочки) нужно использовать inline-подстановку (пример 10.4).

 

Пример 10.4. Использование inline-подстановки

 

$ . .bashrc

 

Команда "точка" является inline-подстановкой. В примере 10.4 содержимое файла сценария .bashrc будет выполнено в контексте вызывающей оболочки.

Inline-подстановка часто используется для считывания в сценарии перемен- ных, заданных в другом файле (пример 10.5).

 

Пример 10.5. Установка значений переменных из файла

 

$ cat myscr2rc VAR1='Snova Privet!'

$ cat myscr2.sh

#!/bin/bash

. myscr2rc echo $VAR1

$ ./myscr2.sh Snova Privet!

 

В примере 10.5 в коде сценария myscr2.sh была выполнена inline-подстановка содержимого файла myscr2rc, в котором была установлена переменная VAR1.








Дата добавления: 2015-06-12; просмотров: 1173;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.