Сценарий (командный файл, скрипт) — это текстовый файл, содер-жащий команды оболочки и конструкций специального языка программирования. Сценарии являются расширением возможностей по набору команд Linux, позволяют гибко решать системные задачи.
При исполнении сценария будет использован интерпретатор системы по умолчанию, но рекомендуется явно указывать оболочку в первой строке сценария командой вида
например,
Команды в сценарии размещаются построчно, лидирующие разделители (пробелы и табуляции) игнорируются. Символ
Для запуска сценария необходимо иметь права на выполнение файла, их можно установить командой
Если изменить права для сценария невозможно, то запустить его можно командой
Сценарй может быть вызван с аргументами, модифицирующими его работу. Аргументами сценария являются строковые значения между разделителями (пробелами), указываемые после имени сценария.
Вообще, если первая строка исполняемого файла начинается на #!, то оболочка выполняет следующие действия:
Пусть первой строкой сценария
Тогда при вызове его с тремя аргументами в виде
фактически происходит вызов
Подобный вызов возможен, если путь, по которому находится сценарий
При запуске сценария система порождает вторичную оболочку, которая завершает свою работу по окончании сценария. Если сценарий вызывает еще один сценарий, то запускается оболочка, дочерняя по отношению ко второй и т.д.
Все параметры и переменные, определенные в сценарии, являются локальными, доступ к ним из других оболочек невозможен. Для того, чтобы дать возможность дочерним оболочкам использовать переменные сценария, можно воспользоваться командой
При этом любая порожденная оболочка получает копии переменных и может обращаться к ним, используя одни и те же имена.
Каждая выполняемая команда возвращает некоторый код завершения. Один из способов его просмотреть — использовать команду вывода со специальным параметром
Для завершения текущего сценария с кодом завершения n в bash используется команда
Программы могут иметь различные коды завершения, но чаще всего используются два:
0 — успешное завершение, ошибок нет;
1 — неудачное завершение, имеется ошибка.
Если Вы нашли что-то полезное для себя — пишите, будет продолжение.
С уважением, Gorinich.
При исполнении сценария будет использован интерпретатор системы по умолчанию, но рекомендуется явно указывать оболочку в первой строке сценария командой вида
#!абсолютный_путь_к_интерпретатору_сценария
,например,
#!/bin/bash
.Команды в сценарии размещаются построчно, лидирующие разделители (пробелы и табуляции) игнорируются. Символ
#
указывает на начало строки комментария в сценарии, который длится до конца строки (это не относится к первой строке, если она начинается с #!
).Для запуска сценария необходимо иметь права на выполнение файла, их можно установить командой
chmod u+x имя_сценария
.Если изменить права для сценария невозможно, то запустить его можно командой
путь_к_интерпретатору -f сценарий
.Сценарй может быть вызван с аргументами, модифицирующими его работу. Аргументами сценария являются строковые значения между разделителями (пробелами), указываемые после имени сценария.
Вообще, если первая строка исполняемого файла начинается на #!, то оболочка выполняет следующие действия:
- Из первой строки удаляются символы
#!
. Оставшаяся часть строки заменяет собой командную строку, с помощью которой был вызван сценарий. - Предыдущая командная строка передается текущей в качестве аргумента.
Пусть первой строкой сценария
myscript
является#!/bin/bash -f
.Тогда при вызове его с тремя аргументами в виде
myscript a b c
фактически происходит вызов
/bin/bash/ -f myscript a b c
.Подобный вызов возможен, если путь, по которому находится сценарий
myscript
, есть в списке путей переменной PATH. Добавить текущий каталог в список путей можно командойPATH=$PATH:$PWD
.При запуске сценария система порождает вторичную оболочку, которая завершает свою работу по окончании сценария. Если сценарий вызывает еще один сценарий, то запускается оболочка, дочерняя по отношению ко второй и т.д.
Все параметры и переменные, определенные в сценарии, являются локальными, доступ к ним из других оболочек невозможен. Для того, чтобы дать возможность дочерним оболочкам использовать переменные сценария, можно воспользоваться командой
export список_переменных
.При этом любая порожденная оболочка получает копии переменных и может обращаться к ним, используя одни и те же имена.
Каждая выполняемая команда возвращает некоторый код завершения. Один из способов его просмотреть — использовать команду вывода со специальным параметром
echo $?
.Для завершения текущего сценария с кодом завершения n в bash используется команда
exit n
.Программы могут иметь различные коды завершения, но чаще всего используются два:
0 — успешное завершение, ошибок нет;
1 — неудачное завершение, имеется ошибка.
Если Вы нашли что-то полезное для себя — пишите, будет продолжение.
С уважением, Gorinich.