>_ IzzyLab

Практическое задание

Доведи скрипт до нуля замечаний

сложно

Скрипт /root/release.sh пишет в /tmp/log.txt строку вида <сообщение> at <timestamp> (сообщение — первый аргумент). В нём сразу несколько проблем, на которые ругается shellcheck. Исправь их все, чтобы shellcheck не выдавал ни одного замечания, а скрипт по-прежнему писал сообщение и метку времени в тот же файл.

Что потренируешь:
  • shellcheck
  • квотирование переменных
  • подстановка команд
  • cd
  • bash

Разбор темы

shellcheck выдаёт не одно, а сразу несколько независимых замечаний, каждое со своим кодом SCxxxx — их нужно разбирать по списку. Тут собран букет типовых проблем bash: неэкранированные раскрытия переменных (ломаются на пробелах и глоббинге), устаревшая форма подстановки команд и незащищённый cd, который молча продолжит работу не в том каталоге, если переход не удался. Мысль задачи в том, что чистый скрипт — это защита от краевых случаев: переменные берут в кавычки, подстановку пишут современным синтаксисом, а рискованные переходы страхуют проверкой кода возврата.

Что проверяется

  1. shellcheck без единого замечания
  2. скрипт сохраняет логику

Как это выглядит