
- •4. Основы программирования на командном языке (sh)
- •4.1. Переменные Shell
- •4.2. Присваивание значений переменным
- •4.3. Вывод содержимого переменных
- •4.4. Специальные символы
- •4.4.1. Кавычки
- •4.4.2. Двойные кавычки
- •4.7. Построим простейшую Shell-процедуру (командный файл)
- •4.8. Специальные параметры интерпретатора команд
- •4.9. Простые условные операторы
- •4.9.1. And-if (&&) – Условное и
- •4.9.2. Or-if (||) – Условное или
- •4.10. Команда test
- •4.10.1. Cравнение строк
- •4.10.2. Cравнение чисел
- •4.10.3. Проверка состояния файла
- •4.10.4. Использование команды test в операторе if
- •4.11. Управляющие конструкции высокого уровня
- •4.11.1. Условный оператор (if)
- •4.12. Операторы цикла (for и while)
- •4.12.1. Оператор цикла for
- •Пример_1: Процедура print1 печатает (выводит в стандартный вывод) три файла, перечисленные в списке значений цикла for.
- •4.12.2. Оператор цикла while
- •4.13. Оператор выбора case
- •4.14. Арифметические операции с переменными Shell
- •4.15 Стандартные переменные Shell
- •4.16 Экспортирование переменных
- •4.17 Встроенные команды интерпретатора sh
- •4.18. Системные файлы
- •4.19. Запуск и режимы работы sh
4.17 Встроенные команды интерпретатора sh
Как правило, для выполнения каждой команды sh порождает отдельный процесс. Существует некоторый набор команд, встроенные в интерпретатор, которые выполняются в рамках текущего процесса. Перечислим некоторые их них:
break [n] - выход из внутреннего for или while циклов. Если указано n, то выход из n внутренних циклов;
continue [n] - перейти к следующей итерации внутреннего for или while цикла;
cd - сменить текущий каталог;
echo arg . . . - выводит аргументы в стандартный вывод;
exec [cmd [arg . . . ]] – интерпретатор выполняет команду, заданную аргументами cmd и arg, путем вызова соответствующего выполняемого файла. Интерпретатор не порождает нового процесса для выполнения команды cmd и возврат в интерпретатор невозможен.
export [arg . . . ] – переменные, указанные аргументами, будут включаться в среду всех вызываемых впоследствии команд;
fc - показывает или редактирует и повторно выполняет ранее введенные команды (для этого используются различные ключи):
%fc –l – вывести список ранее выполненных команд
%fc –s 4 – выполнить команду, указанную в списке под номером 4;
%fc –s man – выполнить команду из списка, которая содержит в названии символы man;
pwd - вывести имя текущего каталога;
read [-p prompt] <список_переменных> - из стандартного ввода читается строка и её слова присваиваются элементам списка переменных;
readonly name – имя name не должно изменяться;
set – встроенная команда set может применяться в трех режимах:
команда set без аргументов распечатывает значения всех переменных среды;
команда set с аргументами применяется для задания значений позиционных параметров:
Пример_1:
%set a b c
%echo $1
a
%echo $1
b
Пример_2:
%set * # позиционные параметры получат значения имен файлов текущего каталога;
команда set позволяет устанавливать режимы работы интерпретатора команд с помощью сдедующих ключей:
-e - если код завершения одной из команд ненулевой, то завершить выполнение интерпретатора;
-n - читать команды, но не выполнять их;
-a - все указанные после этого флага команды автоматически экспортируются;
-v - строки, читаемые интерпретатором, записываются в стандартный вывод;
-x - команды перед выполнением выводятся в стандартный вывод;
shift [n] – сдвинуть список позиционных параметров на n позиций;
unset name – для заданного имени удалить соответствующую переменную.
4.18. Системные файлы
В домашнем каталоге каждого пользователя при создании учетной карточки пользователя администратором системы создаются несколько файлов, у которых первым символом является точка '.'. Эти файлы (начальные командные файлы сессии пользователя) выполняются интерпретатором при входе пользователя в систему и выполняют формирование среды сеанса. Как правило, выполняются следующие установки:
задаются значения переменных PATH, LOGNAME, HOME;
устанавливается тип терминала (переменная) TERM;
выводятся сообщения системного администратора (cat /etc/motd).
Имена начальных командных файлов сессии пользователя различаются для различных интерпретаторов:
.profile – начальный командный файл интерпретатора sh;
.login - начальный командный файл интерпретатора csh;
.cshrc - командный файл установки параметров среды при вызове субинтерпретатора csh.
Пользователь может дополнить указанные командные файлы необходимыми настройками, например, указав необходимые каталоги для поиска команд в переменной PATH.