Если тебе приходится ковырять и писать скрипты на Bash, порой хочется иметь под рукой какой-нибудь линтер. Чтобы уж слишком в говнокод не скатываться.

И такой линтер есть, называется ShellCheck. С помощью него можно производить статический анализ кода и повышать качество твоих замечательных скриптов. Написан этот линтер на Haskell.

С помощью этого линтера ты сможешь искать ошибки в текстах скриптов и получать отчёты о проведённых проверках. Это позволяет повысить производительность работы и качество кода.

Установка элементарная:

apt/yum/brew install shellcheck

А использование этого линтера вообще максимально простое:

shellcheck script.sh

Вот и всё. Если твой скрипт написан чисто и без косяков, то после запуска этой команды ничего не произойдёт. А вот если запустить его на скрипте из этого поста, то в ответ получим много нецензурной брани и полезные советы. С одной стороны, использовать эмоджи нам дают, но линтер как бы намекает на наш IQ.

^-- SC1036 (error): '(' is invalid here. Did you forget to escape it?
^-- SC1088 (error): Parsing stopped here. Invalid use of parentheses?

For more information:
  https://www.shellcheck.net/wiki/SC1036 -- '(' is invalid here. Did you forg...
  https://www.shellcheck.net/wiki/SC1088 -- Parsing stopped here. Invalid use...

Что ещё сказать, этот линтер можно прикрутить в Vim. Достаточно установить из репозитория плагин Plug 'neomake/neomake'. А в VS Code так и называется — ShellCheck.

А если лень ставить и тыкать, можешь воспользоваться онлайн-версией. Но ключи всё же имеются, можешь запустить --help и поглядеть сам, но там особо ничего такого нет.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Я пользуюсь консольной версией из коробки, без всяких дополнительных ключей.

Проект ShellCheck на GitHub

Ну и котиков лови: куда ж без них.