Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СППО - Лабораторные работы.doc
Скачиваний:
23
Добавлен:
10.11.2019
Размер:
752.13 Кб
Скачать

Лабораторная работа №12. Сценарии оболочки

Цель работы: Освоить базовые принципы создания сценариев; освоить принципы работы с аргументами сценария.

Необходимые сведения

Сценарий — это текстовый файл, содержащий команды оболочки и конструкции специального языка программирования. При исполнении сценария будет использован интерпретатор по умолчанию, но рекомендуется явно указывать оболочку в первой строке сценария командой вида

#!/абсолютный_путь_к_интерпретатору_сценария,

например, #!/bin/bash.

Команды размещаются построчно. Символ # указывает на начало строки комментария в сценарии, который длится до конца строки. Для запуска сценария необходимо иметь права на выполнение файла, их можно установить командой chmod. Если файл сценария доступен только для чтения, то запустить его можно командой

/путь_к_интерпретатору -f сценарий.

Для того, чтобы дать возможность дочерним оболочкам использовать переменные сценария, можно воспользоваться командой

export список_переменных.

При этом любая порожденная оболочка получает копии переменных и может обращаться к ним, используя одни и те же имена.

Вместо переменных в сценариях используется понятие параметра. Тип всех параметров — строковый. Чтобы сослаться на значение параметра, нужно поставить символ $ перед его именем:

Параметры делятся на:

  • переменные оболочки (простые переменные);

  • позиционные параметры — их имена представляют собой натуральное число, а значениями служат аргументы с соответствующими номерами, начиная с 1, переданные сценарию или самой оболочке при их запуске;

  • специальные параметры — их именами служат специальные символы.

Обращение к значениям позиционных параметров: $1-$9. Примеры специальных параметров:

$0 — имя файла сценария (первое слово в командной строке);

$# — количество позиционных переменных, переданных сценарию;

$* — все аргументы командной строки с разделителем между ними (обычно пробел);

$? — код завершения последней выполненной команды (0 — успешно, другое значение — произошла ошибка).

Ввод данных в сценариях осуществляется командой

read переменная1 переменная2…

Если задана единственная переменная, то в нее записывается вся вводимая строка. Если указано несколько переменных, то в первую записывается первое слово, во вторую — второе, в последнюю — остаток строки.

Для вывода данных используется команда

echo [опции] [строка].

Опции команды echo:

-n — не производить перевод курсора на следующую строку;

-e — интерпретация специальных символов в строке:

\a — звуковой сигнал;

\n — новая строка;

\t — символ горизонтальной табуляции;

\c — запрет перехода на новую строку;

\r — возврат каретки;

\nnn — символ с ASCII-кодом nnn в восьмеричном формате.

Ход работы

Все сценарии, указанные в этой лабораторной работе набирайте в текстовом редакторе Vim. После набора команд сохраните сценарий, выйдите в оболочку. Проверьте права доступа к сценарию и при необходимости измените их, чтобы получить возможность исполнения сценария. Проверьте работоспособность сценария.

  1. Перейдите в домашний каталог и добавьте его в список путей переменной PATH командой

PATH=$PATH:$PWD.

  1. Создайте сценарий myscript, выводящий в одной строке через пробел текущую дату и имя текущего пользователя.

  2. Создайте сценарий myscript2, выводящий информацию в виде:

Имя сценария: имя_сценария.

Количество аргументов: кол_во_аргументов

  1. Создайте сценарий myscript3, запрашивающий у пользователя имя и фамилию, а затем выводящий строку «Hello, <имя> <фамилия>!» (знак ! обязателен).

  2. Создайте сценарий myscript4, которому передаются четыре аргумента. Вывести их на экран в порядке 4,2,3,1, вставив между ними <пробел>:<пробел>.

  3. Создайте сценарий myscript5, осуществляющий переименование файла, имя которого указывается в аргументе. Переименование должно осуществляться добавлением расширения .bak. После переименования вывести сообщение в виде

Файл старое_имя был успешно переименован в новое_имя.

  1. Создайте сценарий myscript6, осуществляющий переименование файла, имя которого указывается в аргументе. Переименование должно осуществляться переводом всех символов имени в ВЕРХНИЙ регистр.

  2. Создайте сценарий myscript7, в котором запрашиваются два числа A и B, после чего вызывается скрипт myscript8, вычисляющий сумму, разность и произведение этих чисел.