Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 1-8 / ОС_07.doc
Скачиваний:
93
Добавлен:
04.04.2013
Размер:
114.69 Кб
Скачать

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

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

Можно выполнить подобную операцию с помощью цепочки if-else if, но оператор 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

4.14. Арифметические операции с переменными 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

4.15 Стандартные переменные Shell

Некоторые имена переменных зарезервированы в Shell для специальных целей.

Вот некоторые из них:

HOME каталог, в который пользователь попадает при входе в систему или при выполнении команды cd без аргументов;

LOGNAME регистрационное имя пользователя;

PATH список полных имен каталогов, в которых производится поиск файла при указании его неполного имени;

IFS последовательность символов, являющихся разделителем в командной строке;

TERM тип терминала;

PS1 первичное приглашение интерпретатора команд (для интерпретатора sh это - '$'; для csh -'%')4

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

4.16 Экспортирование переменных

Часто возникает вопрос: можно ли передавать переменные Shell, созданные в одной программе, другой программе. Иначе говоря, может ли программа получить доступ к некоторым общим переменным? (В пределах одного сеанса).

Для этих целей применяется метод экспортирования переменных по команде export:

%export <список переменных>

Всякая программа, которая впоследствии будет исполняться, может получить доступ к экспортированным переменным, но не может их изменить

Очень часто экспортированные переменные используются при настройке программных продуктов:

mysqldir=/usr/mysql

export mysqldir

PATH=$PATH:$mysqldir/bin

export PATH

Команда export без аргументов позволяет просмотреть весь список экспортированных переменных.

Соседние файлы в папке Лекции 1-8