Тулза ловит типичные ошибки: неэкранированные переменные, проблемы с пробелами в путях, deprecated синтаксис, потенциальные инъекции. Работает статически — не запускает скрипт, а парсит код.
Установка
brew install shellcheck # macOS
apt install shellcheck # Ubuntu
В связке с ним — shfmt. Форматтер для shell, как gofmt для Go. ShellCheck находит проблемы, shfmt форматирует код. Вместе — идеальная пара для CI.
shfmt -l -w script.sh # форматирует на месте
Альтернативы и дополнения
🔘shellharden — автоматически переписывает скрипты под ShellCheck
🔘bashate — линтер от OpenStack, но давно не обновлялся
🔘bash-language-server — автокомплит и go-to-definition в редакторе
@prog_tools