Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционная система UNIX.doc
Скачиваний:
94
Добавлен:
01.05.2014
Размер:
1.67 Mб
Скачать

9.3.1. Комментарии

Чтобы в программе разместить комментарии, воспользуйтесь знаком #. Если знак # стоит после команды, то сама команда выполняется, а комментарий игнорируется. Формат строки комментария:

#comment<CR>

9.3.2. "Here document"

"Here document" позволяет размещать в shell программе строки, которые перенаправляются в качестве ввода команды в этой программе. Это один из способов обеспечения ввода для команды в shell программе без использования отдельного файла. Запись состоит из символа перенаправления << и разделителя, который указывает начало и конец строк ввода. В качестве разделителя может использоваться один символ или строка символов. Чаще всего это знак !.

Формат команды следующий:

command<<delimiter<CR>

...input lines...<CR>

delimiter<CR>

9.3.3. Использование ed в shell программе

"Here document" предлагает способ использования ed в shell программе. Предположим вы хотите создать shell программу, которая будет вызывать редактор ed, проводить глобальные изменения в файле, записывать изменения в файл и затем завершать работу с ed. На следующем экране приведено содержание программы ch.text, которая выполняет эти задачи:

$ cat ch.text<CR>

echo Type in the filename

read file1

echo Type in the exact text to be changed.

read old_text

echo Type in the exact new text to replace the above.

read new_text

ed - $file1 <<!

g/$old_text/s//$new_text/g

w

q

!

$

Обратите внимание на знак - (минус) в команде ed. Эта опция предотвращает распечатку счетчика символов на экране. Обратите также внимание на формат команды ed для глобальной замены:

g/$old_text/s//$new_text/g

Программа использует 3 переменные: file1, old_text, new_text. При запуске эта программа использует команду read для получения значений этих переменных. Эти переменные содержат следующую информацию: file - имя файла, который будет редактироваться; old_text - текст, который будет изменен; new_text - новый текст.

Переменные вводятся в программу, here document перенаправляет команду глобальной замены, команду записи и команду завершения команде ed. Запустите программу ch.text. Получите следующий экран:

$ ch.text<CR>

Type in the filename

memo<CR>

Type in the exact text to be changed.

Dear John:<CR>

Type in the exact new text to replace the above.

To what it may concern:<CR>

$ cat memo<CR>

To what it may concern:<CR>

$

9.3.4. Коды завершения

Большинство команд shell возвращает коды, которые указывают, успешно ли завершилась команда. Если возвращаемое значение 0(ноль), то команда выполнилась успешно. Коды возврата не печатаются автоматически, но их можно получить как значение специального параметра shell $?.

9.3.4.1. Проверка кодов завершения

После выполнения в интерактивном режиме команды, вы можете увидеть код завершения при вводе:

echo $?

Рассмотрим следующий пример:

$ cat hi

This is file hi.

$ echo $?

0

$ cat hello

cat: cannot open hello

$ echo $?

2

$

В первом случае файл hi существует в вашем справочнике и вы имеете разрешение на чтение. С помощью команды cat вы можете распечатать содержимое файла. Результат команды cat: код возврата 0, который вы получите, задав параметр $?. Во втором случае файл либо не существует, либо вы не имеете право на чтение. Команда cat печатает диагностическое сообщение и возвращает код 2.

shell программа нормально завершается, когда выполнится последняя команда в файле. Однако вы можете использовать команду exit для завершения программы. Более важно то, что вы можете использовать команду exit для получения кодов возврата shell программы.

Соседние файлы в предмете Операционные системы