- •Лабораторные работы Лабораторная работа №1. Файловая оболочка Midnight Commander
- •Лабораторная работа №2. Информационные команды оболочки, работа со справочной системой
- •Лабораторная работа №3. Управление каталогами
- •Лабораторная работа №4. Файловые операции
- •Лабораторная работа №5. Права доступа к файлам
- •Лабораторная работа №6. Организация поиска
- •Лабораторная работа №7. Регулярные выражения. Команда egrep
- •Лабораторная работа №8. Перенаправление стандартных потоков, конвейеры
- •Лабораторная работа №9. Фильтры, обработка текстовых данных
- •Лабораторная работа №10. Архивирование и сжатие
- •Лабораторная работа №11. Текстовый редактор Vim
- •Vim [ключи] [файл].
- •Лабораторная работа №12. Сценарии оболочки
- •Лабораторная работа №13. Условные конструкции
- •Лабораторная работа №14. Циклические конструкции
- •Лабораторная работа №15. Одномерные массивы
- •Лабораторная работа №16. Потоковый редактор sed
- •Лабораторная работа №17. Язык обработки шаблонов gawk
- •If (условие) {действия1} [else {действия2}].
Лабораторная работа №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. После набора команд сохраните сценарий, выйдите в оболочку. Проверьте права доступа к сценарию и при необходимости измените их, чтобы получить возможность исполнения сценария. Проверьте работоспособность сценария.
Перейдите в домашний каталог и добавьте его в список путей переменной PATH командой
PATH=$PATH:$PWD.
Создайте сценарий myscript, выводящий в одной строке через пробел текущую дату и имя текущего пользователя.
Создайте сценарий myscript2, выводящий информацию в виде:
Имя сценария: имя_сценария.
Количество аргументов: кол_во_аргументов
Создайте сценарий myscript3, запрашивающий у пользователя имя и фамилию, а затем выводящий строку «Hello, <имя> <фамилия>!» (знак ! обязателен).
Создайте сценарий myscript4, которому передаются четыре аргумента. Вывести их на экран в порядке 4,2,3,1, вставив между ними <пробел>:<пробел>.
Создайте сценарий myscript5, осуществляющий переименование файла, имя которого указывается в аргументе. Переименование должно осуществляться добавлением расширения .bak. После переименования вывести сообщение в виде
Файл старое_имя был успешно переименован в новое_имя.
Создайте сценарий myscript6, осуществляющий переименование файла, имя которого указывается в аргументе. Переименование должно осуществляться переводом всех символов имени в ВЕРХНИЙ регистр.
Создайте сценарий myscript7, в котором запрашиваются два числа A и B, после чего вызывается скрипт myscript8, вычисляющий сумму, разность и произведение этих чисел.