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

19 Jun, 2026
39,663
🔱 1,933
👥 402

Терминал с подсветкой проблемных строк скрипта

Знакомая ситуация? Вы написали 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

Пример работы в Vim

Топ-5 проблем, которые помогает решить ShellCheck

  1. Проблемы с кавычками
echo $1  # ShellCheck подскажет: "Double quote to prevent globbing"
  1. Неправильные условия
[ $foo=="bar" ]  # Пропущены пробелы вокруг ==
  1. Опасные конструкции
rm -rf "$STEAMROOT/"*  # Катастрофическое удаление, если переменная пуста
  1. Стилевые проблемы
echo `date`  # Устаревший синтаксис, лучше $(date)
  1. Проблемы переносимости
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, этот инструмент удивит вас находками в вашем же коде.

Попробуйте прямо сейчас — либо через онлайн-версию, либо установив локально. Ваши скрипты скажут вам спасибо!

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.