Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_лаб_2_Unix_proc_2014.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
144.9 Кб
Скачать

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;

  • опробовать ввод командных процедур в интерактивном режиме.

Отчет о работе

Выполните задания лабораторного практикума и продемонстрируйте результаты работы преподавателю.