
- •«Разработка командных процедур в ос Unix»
- •1. Цель лабораторной работы
- •2. Интерпретаторы команд ос Unix
- •3. Основные реализации командных интерпретаторов
- •4. Аргументы командных процедур
- •5. Простейшая командная процедура (командный файл)
- •6. Специальные параметры интерпретатора команд
- •7. Команда test
- •7.1. Cравнение строк
- •7.2. Cравнение чисел
- •7.3. Проверка состояния файла
- •8. Управляющие конструкции высокого уровня
- •8.1. Условный оператор (if)
- •8.2. Операторы цикла (for и while)
- •8.2.1. Оператор цикла for
- •8.2.2. Оператор цикла while
- •8.3. Оператор выбора case
- •8.4. Арифметические операции с переменными Shell
- •8.5 Стандартные переменные Shell
- •Задание по лабораторной работе:
- •Отчет о работе
- •Литература
- •Оглавление
8.4. Арифметические операции с переменными Shell
Shell не предназначен для проведения арифметических операций с числами. Параметры рассматриваются как строки. Однако для проведения операций с целыми числами всё-таки существует встроенная команда expr.
В команде expr используются следующие арифметические операции:
+ - / * %
Команда expr посылает результат на стандартный вывод.
Примеры:
%expr 3 + 2
5
%expr 7 "*" 8 (или так: %expr 7 \* 8
56
%n=100
%expr $n + 1
101
Так как expr посылает результат на стандартный вывод, можно использовать обратные апострофы, чтобы присвоить результат работы expr переменной:
%i=`expr 3 + 2`
echo $i
5
%n=100
%n=`expr $n + 1
echo $n
101
8.5 Стандартные переменные Shell
Некоторые имена переменных зарезервированы в Shell для специальных целей.
Вот некоторые из них:
HOME каталог, в который пользователь попадает при входе в систему или при выполнении команды cd без аргументов;
LOGNAME регистрационное имя пользователя;
PATH список полных имен каталогов, в которых производится поиск файла при указании его неполного имени;
IFS последовательность символов, являющихся разделителем в командной строке;
TERM тип терминала;
PS1 первичное приглашение интерпретатора команд (для интерпретатора sh это - '$'; для csh -'%');
PS2 вторичное приглашение (по умолчанию - '>'). В интерактивном режиме перед вводом команды интерпретатор выводит первичную подсказку. Если нажата клавиша Enter, но для завершения команды требуется дальнейший ввод, то выводится вторичное приглашение.
Примечание. Список стандартных переменных и переменных, определенных пользователем, можно вывести по команде set.
Пример_1: ввод с клавиатуры командной процедуры, состоящей из нескольких строк:
%for n in 1 2 3
>do # продолжение ввода
>echo $n # командной процедуры
>done # после вторичной подсказки
1
2
3
%
Пример_2: модификация стандартной переменной:
%HOME=/usr/home/mydir
%PS2="=>"
Пример_3: к значению переменной PATH можно добавить новый каталог:
PATH=$PATH:/home/mydir
Задание по лабораторной работе:
ввести несколько переменных и присвоить им значения;
просмотреть значения всех введенных переменных (встроенная команда set);
создать простейшую командную процедуру, в которой используется значение позиционных параметров;
ввести и отладить командные процедуры: print3, cmplist, copy3, menu;
модифицировать процедуру print3 так, чтобы она выводила на стандартный вывод только текстовые файлы;
модифицировать процедуру cmplist так, чтобы она правильно работала в случае, когда все сравниваемые файлы одинаковы;
модифицировать стандартные переменные sh (PS1, PS2, PATH);
проанализировать управляющий командный файл (.profile) в домашнем каталоге и каталоге /etc;
просмотреть стартовый командный файл /etc/rc и конфигурационный командный файл /etc/rc.conf;
опробовать ввод командных процедур в интерактивном режиме.
Отчет о работе
Выполните задания лабораторного практикума и продемонстрируйте результаты работы преподавателю.