Цель работы
Изучить средства управления потоком в сценариях shell, механизм разбора параметров с использованием команды getopt,
использование функций в командном языке.
Описание работы
В рамках лабораторной работы необходимо написать сценарий shell bim.sh, позволяющий выполнить пакетную обработку JPEG-файлов из заданного каталога. JPEG-файлы идентифицируются расширениями *.jpg и *.jpeg (возможно, в верхнем регистре). Сценарий должен уметь выполнять определенные ниже функции для всех JPEG-файлов заданного каталога. Сценарий должен распознавать как короткие, так и длинные опции.
Для преобразования изображений можно воспользоваться программой convert.
Перечень распознаваемых опций приведен в таблице. При обнаружении противоречащих и дублирующихся опций, поведение сценария не оговаривается (на Ваш выбор).
# | Действие | Опция |
---|---|---|
1 | Каталог с подлежащими обработке изображениями. Это обязательный параметр, если он опущен, сценарий должен выводить короткую справку и завершать выполнение. |
-s путь --source-dir путь |
2 | Целевой каталог (в котором будут размещены обработанные файлы). Это обязательный параметр, если он опущен, сценарий должен выводить короткую справку и завершать выполнение. |
-d путь --dest-dir путь |
3 | Зеркальное отражение изображений относительно горизонтальной оси (flop). |
-h --horiz-mirror |
4 | Зеркальное отражение изображений относительно вертикальной оси (flip). |
-v --vert-mirror |
5 | Размывание изображение. (blur) |
-b значение --blur значение |
6 | Поворот изображения, если это необходимо (auto-orient). |
-r --rotate |
7 | Любое преобразование или эффект ImageMagick (convert) на ваш выбор. | на ваш выбор |
8 | Любое преобразование или эффект ImageMagick (convert) на ваш выбор. | на ваш выбор |
Критерии оценки работы
Оценивание задания осуществляется по следующей таблице, в которой каждое значение может быть умножено на поправочный вещественнозначный коэффициент в интервале [0; 1], отражающий степень самостоятельности выполнения задания. Всего за работу можно получить до 10 баллов
# | Релизовано | Баллы |
---|---|---|
1 | Реализовано распознавание опций -d, -s | 0 - 2 |
2 | Предусмотрена возможность появления файлов *.jpg и *.jpeg с проивольной комбинацией регистров символов расширения (например, *.JpG), выполняются проверки существования каталогов и другие исключительные ситуации | 0 - 2 |
3 | Реализована функция 3-8 | 0 - 1 (каждая) |
Возможные штрафы приведены в таблице. Всего можно получить до 10 штрафных баллов.
# | Описание | Штраф |
---|---|---|
1 | Отсутствие заголовочного комментария, несоответствие заголовочного комментария общепринятым соглашениям | 0 - 2 |
2 | Отсутствие пояснительных комментариев, комментирование самоочевидных конструкций (дублирование кода, а не пояснение смысла) | 0 - 2 |
3 | Присутствует дополнительный вывод, не предусмотренный требованиями (например, диагностические сообщения shell и использованных команд) | 0 - 1 |
4 | Неверно устанавливается статус завершения сценария | 0 - 1 |
5 | Неструктурированный код, непоследовательность в стиле | 0 - 2 |
6 | Возможны (достаточно маловероятные) условия, при которых сценарий будет работать некорректно, не предусмотренные требованиями. | 0 - 2 |
Итоговая оценка определяется суммой баллов. Работа, оцененная менее чем на 0 баллов не засчитывается.