Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SPO_SRS.doc
Скачиваний:
5
Добавлен:
02.05.2019
Размер:
1.06 Mб
Скачать

4.7. Порожній оператор

Порожній|пустий| оператор має формат

:

Нічого не робить|чинить|. Повертає значення "0". Наприклад, в конструкції "while :" або ставити на початку командного файлу, щоб гарантувати, що файл не буде прийнятий за виконуваний файл для "csh".

4.8. Функції в shell

Функція дозволяє підготувати список команд shell для подальшого|наступного| виконання.

Опис функції має вигляд|вид|:

ім'я()

{

список команд

}

після чого звернення до функції відбувається|походить| по імені. При виконанні функції не створюється нового процесу. Вона виконується в середовищі|середі| відповідного процесу. Аргументи функції стають її позиційними параметрами; ім'я функції - її нульовий параметр. Перервати виконання функції можна оператором "return [n]", де (необов'язкове) "n" - код повернення.

Приклад|зразок|. Виклик на виконання файлу "fun"

echo $$

fn() # опис функції

{

echo xx=$xx

echo $#

echo $0: $$ $1 $2

xx=yy ; echo xx=$xx

return 5

}

xx=xx ; echo xx=$xx

fn а b # виклик функції "fn" з|із| параметрами

echo $?

echo xx=$xx

що містить|утримує| опис і виклик функції "fn", видасть на екран:

749

xx=xx

xx=xx

2

fun: 749 а b

xx=yy

5

xx=yy

4.9. Обробка переривань ("trap")

Буває необхідно захистити виконання програми від переривання.

Найчастіше доводиться зустрічатися з|із| наступними|слідуючими| перериваннями, відповідними сигналам:

0

вихід з|із| інтерпретатора

1

відбій (відключення видаленого|віддаленого| абонента)

2

переривання від <Del>,

9

знищення (не перехоплюється)

15

закінчення виконання.

Для захисту від переривань існує команда "trap", що має формат:

trap 'список команд' сигнали

Якщо в системі виникнуть переривання, чиї сигнали перераховані через пропуск|прогалину| в "сигнали", то буде виконаний "список команд", після чого (якщо в списку команд не була виконана команда "exit") управління повернеться в точку переривання і продовжиться|триватиме| виконання командного файлу.

Наприклад, якщо перед припиненням по перериваннях виконання якого те командного файлу необхідно видалити|знищити,віддалити| файли в "/tmp", то це може бути виконано командою "trap":

tarp 'rm /tmp/* ; exit 1' 1 2 15

яка передує іншим командам файлу. Тут, після|потім| видалення|віддалення| файлів буде здійснений вихід "exit" з|із| командного файлу.

Команда "trap" дозволяє і просто ігнорувати переривання, якщо "список команд" порожньої|пустої|. Так наприклад, якщо команда "cmd" виконується дуже довго, а користувач вирішив|розв'язав| відключитися від системи, то для продовження виконання цієї команди можна написати, запустивши команду у фоновому режимі:

( trap '' 1; cmd )&

Контрольні питання і завдання:

  1. Яке призначення команди test? Який її формат?

  2. Які умови перевірки файлів, рядків існують в shell?

  3. Поясніть призначення і структуру оператора if в shell?

  4. Поясніть призначення і структуру оператора case?

  5. Поясніть призначення і структуру операторів циклу for, while, until?

  6. Як використовувати функції в shell?

  7. Для чого призначена команда trap? Наведіть приклад її використання.

Завдання 1: Створити командний файл, в якому:

  • Виводиться на екран ім'я командного файлу;

  • Виводиться вміст файлу (файл повинен існувати), ім'я якого передається першим параметром командного файлу, його рядки нумеруються, сортуються в зворотному порядку, зберігаються у файлі і відображуються відображуються на екрані;

  • Створюється з клавіатури і відображується відображується на екрані файл, ім'я якого задається другим параметром командного файлу.

Завдання 2: Створити командний файл, що реалізовує меню з трьох пунктів:

1-й пункт – вивести на екран ім'я користувача і ім'я поточної директорії;

2-й пункт – вивести інформацію про дискову і оперативну пам'ять в даній системі;

3-й пункт – підтвердження.

Завдання 3: Створити командний файл, що видаляє всі файли поточного каталога в диалоговому режимі.

Завдання 4: Створити командний файл, який:

  • Через вхідні параметри приймає від одного до декількох файлів;

  • ВідображуєВідображує на екрані їх вміст;

  • Сортує в зворотному порядку;

  • Відображує Відображує на екрані відсортований файл і зберігає його у файлі з тим же ім'ям, додаючи суфікс _sorted.

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]