Bash: обработка текста и скрипты / Ступень 5 из 9 · шаг 6 из 7
Почини скрипт отчёта
Не запущена
Запускается
Ситуация
Каждую ночь филиалы присылают выгрузки в ~/import/inbox, и загрузчик забирает их в базу.
Перед загрузкой он запускает проверку и начинает, только если она вернула код 0:
bash report.sh inbox/*.csv && import-uploads inbox/*.csv
Скрипт ~/import/report.sh написал коллега, договор записан в шапке скрипта. Утром ты
смотришь вывод ночной проверки: строк в нём больше, чем выгрузок, пустая east.csv прошла
как OK, а загрузка началась, хотя FAIL в выводе есть.
Задача
Исправь ~/import/report.sh так, чтобы он выполнял договор:
- на каждый аргумент — ровно одна строка в stdout, в том же порядке:
OK <аргумент>илиFAIL <аргумент>; аргумент — ровно как передан, даже с пробелом или звёздочкой*в имени; в stderr при этом ничего; OK— только если это обычный файл (или ссылка на него), его можно прочитать и он не пуст; иначеFAIL;- код завершения 1, если хоть один файл получил
FAIL, где бы он ни стоял, и 0, если всеOK; - без аргументов — пустой stdout, в stderr строка
Usage: report.sh FILE...и код 2.
Проверка запускает скрипт от твоего имени — bash ~/import/report.sh … — на своих файлах,
которых в inbox нет. Выгрузки в inbox — для твоих опытов: чини скрипт, а не их.
Цели лабы
0 из 4-
На каждый аргумент — одна строка с именем ровно как передано, даже с пробелом или звёздочкой; stderr пуст — ещё не проверялась
-
OK — только у обычного непустого файла, который можно прочитать, или у ссылки на такой файл — ещё не проверялась
-
Код 1, если не прошёл хоть один файл, где бы он ни стоял; код 0, если прошли все — ещё не проверялась
-
Без аргументов — пустой stdout, строка Usage в stderr и код 2 — ещё не проверялась
Подсказки
открыто 0 из 3 · открываются по одной
Подсказка 1
Показать решение
после 3 неудачных проверок