Библиотека сайта rus-linux.net
9. Средства программирования shell
Вы можете использовать shell для создания программ. Такие программы называются также процедурами shell. В этом разделе рассказывается как создавать и выполнять программы shell с помощью команд, переменных, позиционных параметров, кодов возврата.
Прежде чем создавать программы shell необходимо изучить редактор.
9.1. Программы shell
9.1.1. Создание простых программ shell
Начнем описание создания простых программ shell, которые выполняют задачи:
- печать текущего справочника;
- список содержимого этого справочника;
- отображение следующих сообщений на вашем терминале:
"This is the end of the shell program."
С помощью редактора создайте файл dl и введите в него строки:
pwd<CR> ls<CR> echo This is the end of the shell program.<CR>
Теперь вы имеете программу shell. Вы можете с помощью cat отобразить содержимое файла:
$ cat dl<CR> pwd ls echo This is the end of the shell program. $
9.1.2. Выполнение программ shell
Выполнить shell программу вы можете с помощью команды sh. Введите:
sh dl<CR>
Когда команда dl выполняется с помощью sh, то вначале печатается имя пути текущего справочника, потом список файлов в текущем справочнике и в конце комментарий: "This is the end of the shell program."
С помощью команды chmod вы можете сделать файл исполняемым:
$ chmod u+x dl<CR> $ ls -l<CR> total 2 -xw------ 1 login login 3661 Nov 2 10:28 mbox -xwx----- 1 login login 48 Nov 15 10:50 dl $
Обратите внимание, что chmod включает разрешение на выполнение (+x) для пользователя (u). Теперь dl является исполняемой программой. Попытайтесь выполнить ее. Введите:
dl<CR>
9.1.3. Создание справочника bin для исполняемых файлов
Чтобы сделать shell программы доступными изо всех ваших справочников, вы можете создать справочник bin в своем регистрационном справочнике и переписать shell программы в этот справочник.
С помощью переменной PATH вы можете включить ваш справочник bin:
PATH = $PATH:$HOME/bin
9.1.4. Ограничения при именовании программ shell
shell программе вы можете дать любое имя, не совпадающее с именами системных команд. Если имя вашей программы совпадает с именем команды системы, то система будет выполнять вашу команду вместо системной.