Linux Labs

Bash: обработка текста и скрипты / Ступень 5 из 9 · шаг 6 из 7

Почини скрипт отчёта

средняя ~25 мин
Не запущена Запускается обычно ~20 с
Сообщить о проблеме

Ситуация

Каждую ночь филиалы присылают выгрузки в ~/import/inbox, и загрузчик забирает их в базу. Перед загрузкой он запускает проверку и начинает, только если она вернула код 0:

bash report.sh inbox/*.csv && import-uploads inbox/*.csv

Скрипт ~/import/report.sh написал коллега, договор записан в шапке скрипта. Утром ты смотришь вывод ночной проверки: строк в нём больше, чем выгрузок, пустая east.csv прошла как OK, а загрузка началась, хотя FAIL в выводе есть.

Задача

Исправь ~/import/report.sh так, чтобы он выполнял договор:

  1. на каждый аргумент — ровно одна строка в stdout, в том же порядке: OK <аргумент> или FAIL <аргумент>; аргумент — ровно как передан, даже с пробелом или звёздочкой * в имени; в stderr при этом ничего;
  2. OK — только если это обычный файл (или ссылка на него), его можно прочитать и он не пуст; иначе FAIL;
  3. код завершения 1, если хоть один файл получил FAIL, где бы он ни стоял, и 0, если все OK;
  4. без аргументов — пустой 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 неудачных проверок

Выйти из лабы?

Машина проработает ещё 10 минут и удалится. Файлы пропадут, выполненные цели останутся.

Загрузка…