>_ IzzyLab

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

Заквотируй переменную

средне

Скрипт /root/backup.sh копирует переданный первым аргументом файл в /tmp/bk/, но shellcheck ругается на неэкранированную переменную (из-за чего скрипт ломается на именах с пробелами). Исправь так, чтобы shellcheck не выдавал замечаний, а скрипт корректно копировал даже файл с пробелом в имени.

Что потренируешь:
  • shellcheck
  • SC2086
  • word splitting
  • квотирование
  • cp

Разбор темы

Замечание SC2086 про самую частую ошибку в shell: неэкранированная подстановка $var проходит word splitting и glob-раскрытие, поэтому значение с пробелом разлетается на несколько аргументов, а символы */? подменяются именами файлов. Защита — заключить подстановку в двойные кавычки: внутри них значение остаётся единым аргументом, но переменная всё равно раскрывается. Логику скрипта менять не нужно — только обезопасить сам аргумент.

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

  1. shellcheck без замечаний
  2. скрипт работает с пробелами в имени

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