Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаба 3-4 (Методы) / ОС_лаб_4.doc
Скачиваний:
36
Добавлен:
04.04.2013
Размер:
102.4 Кб
Скачать

8.3. Оператор выбора case

Оператор выбора caseудобен для организации ветвления программы на основе совпадения шаблонов (образцов).

Можно выполнить подобную операцию с помощью цепочки if-elseif, но операторcaseкороче, удобнее и нагляднее:

Формат оператора case:

caseпеременная

in

шаблон 1) команда

команда

. . . . . . .

команда ;;

. . . . . . . . . . . . . . . . . . . .

шаблон N. команда

команда

. . . . . . .

команда ;;

esac

Если значение переменной совпало со значением шаблона, то выполняются команды, расположенные до символов ';;', затем те, что после esac.

Пример_1:Командная процедураmenu

echo "

  1. ls

  2. date

  3. pwd

which function do you wish? \c"

read command

case "$command"

in

  1. ls –Fc

;;

  1. date

;;

*) echo not available

;;

esac

8.4. Арифметические операции с переменными Shell

Shellне предназначендля проведения арифметических операций с числами. Параметры рассматриваются какстроки. Однако для проведения операций с целыми числами всё-таки существует встроенная командаexpr.

В команде exprиспользуются следующие арифметические операции:

+ - / * %

Команда exprпосылает результат настандартный вывод.

Примеры:

%expr3 + 2

5

%expr7 "*" 8 (или так: %expr7 \* 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;

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

Соседние файлы в папке Лаба 3-4 (Методы)