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



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



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’. А в VSCode так и называется shellcheck.



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



🐱 Проект shellcheck на github



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



tags: #bash #utils



🟢 Подпишись: @bashdays