Правила ShellCheck
Тема дорожной карты · Bash
Правила ShellCheck — это индивидуально пронумерованные диагностические коды (с префиксом SC), которые классифицируют конкретные проблемы в Bash и POSIX shell-скриптах: от незначительных стилистических предупреждений до критических ошибок корректности. К наиболее важным правилам ShellCheck, которые должен знать каждый практик написания shell-скриптов, относятся: SC2086 — всегда заключайте расширения переменных в двойные кавычки, чтобы предотвратить нежелательное разбиение слов и подстановку имён файлов; SC2046 — заключайте подстановки команд $(...) в кавычки по той же причине; SC2164 — используйте cd ... || exit для обработки сбоев cd в скриптах автоматизации Linux; SC2181 — проверяйте $? сразу после команды, а не сохраняйте его, поскольку промежуточные команды могут перезаписать его. Правила сгруппированы по степени серьёзности — error, warning, info и style — и ShellCheck отображает их со ссылкой на https://www.shellcheck.net/wiki/SCxxxx, где каждое правило объясняется с примерами и правильными исправлениями. Команды могут подавлять конкретные правила ShellCheck для допустимых исключений с помощью встроенных директив, например # shellcheck disable=SC2034, или на уровне всего проекта в файле .shellcheckrc, следуя практикам сопровождаемых Bash-кодовых баз. Знакомство с распространёнными правилами ShellCheck ускоряет освоение рекомендуемых практик написания Bash-скриптов и значительно сокращает ошибки в скриптах автоматизации Linux.
Как это работает
Правила ShellCheck: set -euo pipefail + IFS=$'\n\t' сверху, shellcheck на каждый скрипт, кавычки на переменных, функции, логирование в stderr с timestamps, валидация input, exit с осмысленными кодами (0 = успех, 1+ = конкретные ошибки), документ usage в header-комменте, Google Shell Style Guide. Скрипты — это код: version control, code review, тестирование (bats-core или shunit2 для unit-тестов).
Когда применять
Best practices с первого дня — ретрофит потом означает пересмотр каждого скрипта. Для командных скриптов договоритесь о стиле (Google разумен). pre-commit-hooks — для автоматического shellcheck. Для критичных скриптов пишите bats-core unit-тесты; для deploy-скриптов сначала integration-test в staging.
Типичные ошибки
Ловушки Правила ShellCheck: пропуск shellcheck ("я достаточно опытен"); скрипты, которые никто не может поддерживать (нет комментариев, нет usage); bash для задач, где Python/Go подошли бы лучше; не тестируете скрипты до production-запуска.