- •И.Н.Акуленок
- •Утверждено советом университета
- •Введение
- •Глава 1. Текстовые редакторы
- •1.1. Редактор ed
- •1.1.1. Команды, не использующие адресации строк
- •1.1.2. Команды, использующие один адрес
- •1.1.3. Команды, использующие два адреса
- •1.1.4. Нумерация строк
- •1.1.5. Примеры использования команд
- •1.2. Редактор VI и ex
- •1.2.1. Редактирование нескольких файлов
- •1.2.2. Вставка текста из одного файла в другой
- •1.3. Потоковый редактор sed
- •1.4. Контрольные вопросы
- •Глава 2. Командные процессоры ос unix
- •2.1. Типы командных процессоров
- •2.2. Идентификация и смена оболочки
- •2.3. Запуск shell и стартовых shell–файлов
- •2.4. Установка переменных среды
- •2.5. Псевдонимы команд
- •2.6. Выполнение .Profile после его изменения
- •2.7. Контрольные вопросы
- •Глава 3. Интерпретатор shell
- •3.1. Shell–переменные
- •3.1.1. Задание значений переменных и их отмена
- •3.1.2. Экспорт переменных
- •3.2. Специальные символы
- •3.2.1. Использование двойных кавычек и апострофа
- •3.2.2. Обратные апострофы
- •3.2.3. Обратная наклонная черта
- •3.3. Позиционные переменные
- •3.4. Код завершения процесса
- •3.5. Конвейеры и списки
- •3.6. Композиции команд
- •3.5.1. Порожденный shell – оператор круглые скобки ( )
- •3.5.2. Оператор списка – фигурные скобки {}
- •3.6. Контрольные вопросы
- •Глава 4. Программные структуры
- •4.1. Команда test
- •4.1.1. Условия проверки файлов
- •4.1.2. Условия проверки строк
- •4.1.3. Условия сравнения целых чисел
- •4.1.4. Сложные условия
- •4.2. Команда expr
- •4.3. Команда read
- •4.4.Условный оператор if
- •4.5. Оператор цикла for
- •4.6. Операторы цикла while и until
- •4.7. Оператор вызова case
- •4.8. Функции в shell
- •4.9. Контрольные вопросы
- •5. Создание сценария командного процессора
- •5.1. Пример простейшего сценария
- •5.2. Основные этапы разработки сценария
- •5.3. Отладка командных процедур
- •5.4. Выполнение shell–программ
- •5.5. Создание новых команд
- •5.6. Контрольные вопросы
- •Список литературы
- •Оглавление
- •Акуленок Ирина Николаевна
3.6. Контрольные вопросы
Перечислите позиционные переменные?
Что такое кода завершения процесса?
Какие значения может принимать код завершения?
Какие утилиты вырабатывают только код завершения?
Перечислите основные приемы композиции команд?
Глава 4. Программные структуры
4.1. Команда test
Команда testпроверяет выполнение некоторого условия. С использованием этой (встроенной) команды формируются операторы выбора и цикла языкаshell.
Существует два возможных варианта синтаксиса команды:
test условие
или
[ условие ]
Мы будем использовать второй вариант, т.е. вместо того, чтобы писать перед условием слово "test", будем заключать условие в скобки, что более привычно для программистов.
На самом деле shellбудет распознавать эту команду по открывающей скобке "[", как слову, соответствующему команде "test". Уже этого достаточно, чтобы предупредить о распространенной ошибке начинающих – между скобками и содержащимся в них условием обязательно должны быть пробелы.
Пробелы должны быть и между значениями и символом сравнения или операции (как, кстати, и в команде "expr", рассмотренной в следующем параграфе). Не путать с противоположным требованием для присваивания значений переменным.
В shellкомандаtestможет быть использована для анализа трех объектов:
для тестирования файлов;
для тестирования строк;
для тестирования чисел.
4.1.1. Условия проверки файлов
Команда testможет использоваться для проверки существования файлов и каталогов и установленных для них полномочий. Для этого используется следующий синтаксис:
test –rwfds имя_файла
–r– файл имеет разрешение на чтение файла;
–w– файл имеет разрешение на запись в файл;
–x– файл можно выполнять;
–f– файл является обычным файлом;
–d– файл является каталогом;
–с– файл является специальным файлом;
–s– размер файла отличен от нуля, т.е. он не пустой.
В каждом случае команда возвращает нулевое значение, если проверка дает положительный (истинный) результат, и ненулевое значение, если – отрицательный (ложный).
Эта команда дает широкий спектр возможностей проверки файлов, которые следует выполнять в сценарии перед потенциально недопустимыми операциями.
Например, имеется сценарий копирования файлов. Пользователь указывает два файловых аргумента:источникиприемник.
В сценарии к этим аргументам можно обращаться как $1и$2. В позиционном параметре$#хранится количество аргументов. Тогда с помощью командыtestможно протестировать следующее:
проверка test«$1» = «$2» позволяет предотвратить случайное копирование;
проверка test –f «$1» позволяет проверить, является ли исходный файл (источник) файлом (т.е. не каталогом);
проверка test–d«$2» позволяет увидеть, является ли приемник каталогом.
Например, вводя с клавиатуры командные строки в первом случае получим подтверждение (код завершения "0"), а во втором – опровержение (код завершения "1")."specific" – имя существующего файла.
[ –f specific ] ; echo $?
0
[ –d specific ] ; echo $?
1
4.1.2. Условия проверки строк
Команда testможет сравнить две строки. Для этого используется следующий синтаксис:
test –n <string> – существование цепочки символов (строка не пустая);
test –z <string>– отсутствие цепочки символов (строка пустая);
test <string_1> = <string_2>– равенство двух цепочек символов;
test <string_1> != <string_2>– неравенство двух цепочек символов.
Например: переменнойquitприсвоено пустое значение.
$ quit=
$ test –n “$quit”
$ echo $?
1
$ test –z “$quit”
$ echo $?
0
Например, переменнойquitприсвоено значение – пробел.
$ quit=” ”
$ test –n “$quit”
$ echo $?
0
$ test –z “$quit”
$ echo $?
1
Например:
x=abc ; [ abc = "$x" ] ; echo $?
0
x=abc ; [ –n "$x" ] ; echo $?
0
x="" ; [ –n "$x" ] ; echo $?
1
Примечание: команда "test" дает значение "истина" (т.е. код завершения "0"), если в скобках стоит непустое слово.
[ privet ] ; echo $?
0
[ ] ; echo $?
1