ShellCheck - ваш личный наставник для shell-скриптов

Знакомая ситуация? Вы написали shell-скрипт, он вроде бы работает, но иногда выдает странные ошибки. Или того хуже — молча делает не то, что ожидалось. Время познакомиться с ShellCheck — статическим анализатором, который превратит ваши мучения с bash в осознанное программирование.
Что это за зверь такой?
ShellCheck — это инструмент, который проверяет shell-скрипты на:
- Синтаксические ошибки (даже те, которые bash пропускает)
- Семантические проблемы (код работает, но не так, как вы думаете)
- Подводные камни (то, что сломается при особых условиях)
Проект существует с 2012 года, написан на Haskell и распространяется под лицензией GPLv3. На GitHub у него почти 38 тысяч звезд — явный признак того, что инструмент действительно полезен.
Почему это нужно именно вам
Если вы хоть раз:
- Получали загадочное сообщение "syntax error near unexpected token"
- Обнаруживали, что переменная оказывается пустой в самый неподходящий момент
- Удаляли не те файлы из-за неправильного glob-паттерна
...то ShellCheck станет вашим спасителем. Он не просто находит ошибки, но и объясняет, в чем проблема и как её исправить.
Как это работает на практике
1. Проверка в терминале
Проще всего запустить проверку прямо из командной строки:
shellcheck myscript.sh
На выходе получите что-то вроде:
In myscript.sh line 3:
echo $1
^-- SC2086: Double quote to prevent globbing and word splitting.
2. Онлайн-версия
Не хотите ничего устанавливать? Просто зайдите на shellcheck.net, вставьте код и получите мгновенный анализ.
3. Интеграция с редакторами
ShellCheck поддерживается всеми популярными редакторами:
- Vim через ALE, Neomake или Syntastic
- VS Code через специальное расширение
- Emacs через Flycheck
- Sublime Text через SublimeLinter

Топ-5 проблем, которые помогает решить ShellCheck
- Проблемы с кавычками
echo $1 # ShellCheck подскажет: "Double quote to prevent globbing"
- Неправильные условия
[ $foo=="bar" ] # Пропущены пробелы вокруг ==
- Опасные конструкции
rm -rf "$STEAMROOT/"* # Катастрофическое удаление, если переменная пуста
- Стилевые проблемы
echo `date` # Устаревший синтаксис, лучше $(date)
- Проблемы переносимости
echo {1..10} # Работает в bash, но не в sh/dash
Где особенно пригодится
- CI/CD пайплайны — встроите проверку в процесс сборки
- Администрирование серверов — избежите фатальных ошибок в скриптах
- Автоматизация — сделаете свои скрипты надежнее
- Обучение — поймете тонкости shell-программирования
Как установить
Почти во всех дистрибутивах есть пакет shellcheck. Например:
- Ubuntu/Debian:
sudo apt install shellcheck - macOS:
brew install shellcheck - Windows: через Chocolatey (
choco install shellcheck)
Полный список вариантов установки — в официальном репозитории.
Философия проекта
Как метко заметил один из пользователей:
"Сначала вы думаете: 'ShellCheck — это круто!', а потом: 'Почему мы до сих пор используем bash?'"
ShellCheck не просто находит ошибки — он учит вас писать лучший код. С каждой проверкой вы глубже понимаете тонкости shell-программирования.
ShellCheck — must-have инструмент для любого, кто пишет shell-скрипты. Экономит время, предотвращает ошибки и обучает лучшим практикам. Даже если считаете себя экспертом в bash, этот инструмент удивит вас находками в вашем же коде.
Попробуйте прямо сейчас — либо через онлайн-версию, либо установив локально. Ваши скрипты скажут вам спасибо!
