🕷️ Как улучшить и отладить bash/shell скрипты с помощью ShellCheck |

🕷️ Как улучшить и отладить bash/shell скрипты с помощью ShellCheck

Мануал

ShellCheck – это бесплатный инструмент статического анализа с открытым исходным кодом, который можно использовать для проверки и улучшения скриптов.

Он способен выделять как общие, так и граничные ошибки и предлагать соответствующие исправления.

ShellCheck может использоваться как онлайновая или системная утилита, а также может быть интегрирован в качестве линтера в различные текстовые редакторы.

В этом руководстве мы узнаем, как установить и использовать ShellCheck в некоторых наиболее распространенных дистрибутивах Linux, а также как интегрировать его в Vim и Visual Studio Code.

Установка

Прежде всего, давайте установим ShellCheck на нашу любимую систему на базе Linux.

Это очень простая задача, поскольку утилита упакована в программные репозитории наиболее используемых дистрибутивов.

Все, что нам нужно сделать, это использовать соответствующий менеджер пакетов.

На Fedora, например, мы будем использовать dnf:

sudo dnf install ShellCheck

В  системах на базе Debian вместо этого мы используем apt:

sudo apt install shellcheck

В Archlinux мы используем pacman:

sudo pacman -S shellcheck

Использование

Использовать ShellCheck очень просто.

Чаще всего мы просто вызываем команду и передаем в качестве аргумента путь к скрипту, который хотим проверить.

Приведем пример.

В следующем фрагменте вы можете видеть, что мы пропустили кавычки в переменной shell.

Это распространенная ошибка, которая, в зависимости от обстоятельств, может быть опасной:

#!/bin/bash

text=”this is the text”

echo $text

Мы сохраним приведенный выше код в файле script.sh.

Чтобы проверить его с помощью ShellCheck, мы просто передадим его в качестве аргумента утилите:

shellcheck script.sh

Результатом выполнения приведенной выше команды будет следующее:

In script.sh line 5:
echo $text
     ^---^ SC2086 (info): Double quote to prevent globbing and word splitting.

Did you mean: 
echo "$text"

For more information:
  https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...

Как видите, ошибка найдена и выделена правильно.

Ошибка идентифицируется определенным кодом, в данном случае это SC2086, и для нее дается краткое описание.

Более подробную информацию можно получить, просто нажав на предоставленную ссылку, которая указывает на соответствующую страницу ShellCheck Wiki:

 

ShellCheck, помимо всего прочего, также способен обнаруживать “башизмы”: нестандартные особенности, характерные для оболочки Bash.

Мы получаем предупреждение, когда не указываем явно Bash в качестве интерпретатора оболочки. \

Например, посмотрите на этот пример:

#!/bin/sh

# Prints the current date and time
function now() {
date ‘+%Y/%m/%d %H:%M’
}

Если мы запустим ShellCheck с этим кодом, то получим следующий результат:

In date.sh line 4:
function now() {
^-- SC2112 (warning): 'function' keyword is non-standard. Delete it.

For more information:
  https://www.shellcheck.net/wiki/SC2112 -- 'function' keyword is non-standar...

Хотя в коде нет ошибок, ShellCheck предупреждает нас, потому что мы использовали ключевое слово “function” для создания функции: этот синтаксис специфичен для bash, но мы не указали bash в качестве интерпретатора скриптов (мы использовали /bin/sh, который в некоторых дистрибутивах, например Ubuntu, является символической ссылкой, указывающей на оболочку “dash”).

Хотя в коде нет ошибок, ShellCheck предупреждает нас, потому что мы использовали ключевое слово “function” для создания функции: этот синтаксис специфичен для bash, но мы не указали bash в качестве интерпретатора сценариев (мы использовали /bin/sh, который в некоторых дистрибутивах, например Ubuntu, является символической ссылкой, указывающей на оболочку “dash”).

Использование онлайн-версии ShellCheck

Если по каким-то причинам мы не можем или не хотим устанавливать ShellCheck на нашу систему, мы можем проверить наши скрипты онлайн, используя веб-версию ShellCheck.

Все, что нам нужно сделать, это вставить наш код в онлайн-редактор.

Под ним появятся предупреждения:

Это поведение можно повторить в большинстве текстовых редакторов, интегрировав ShellCheck в качестве линтера.

Давайте посмотрим, как это сделать.

Интеграция ShellCheck в текстовые редакторы

ShellCheck может быть интегрирован в некоторые из наиболее используемых текстовых редакторов в качестве линтера.

Давайте посмотрим несколько примеров.

Интеграция ShellCheck в Vim

Чтобы использовать ShellCheck в качестве линтера непосредственно в Vim, сначала нужно установить плагин линтинга.

Одним из самых популярных и современных вариантов на момент написания статьи является ALE.

Плагин использует асинхронные возможности Neovim и Vim >= 8.

Есть много способов установить его, используя один из многочисленных менеджеров плагинов Vim или встроенную систему загрузки плагинов Vim.

После установки плагина Vim linter и ShellCheck мы можем визуализировать предупреждения и предложения прямо из интерфейса редактора!

Интеграция ShellCheck в Visual Studio Code

Visual Studio Code – это текстовый редактор, созданный компанией Microsoft и разработанный с использованием фреймворка Electron.

📜 Как установить VSCode на Kali Linux

Он основан на проекте с открытым исходным кодом Code-OSS и благодаря большой экосистеме плагинов может быть легко превращен в IDE для наиболее используемых языков программирования (Javascript прежде всего).

Для интеграции ShellCheck в Visual Studio Code достаточно найти плагин “shellcheck” прямо в интерфейсе редактора и нажать на кнопку “install”:

ShellCheck также может быть интегрирован в другие текстовые редакторы, такие как Sublime Text и Emacs: инструкции можно найти в специальном разделе README ShellCheck.

🐧 Совместное безопасное использование и управление терминалами в режиме реального времени из веб-браузера

Заключение

В этом руководстве мы рассмотрели, как установить и использовать ShellCheck для отладки и улучшения наших shell-скриптов.

ShellCheck – это инструмент статического анализа, который легко устанавливается во все наиболее используемые дистрибутивы Linux и может использоваться из командной строки или из различных текстовых редакторов с помощью специальных плагинов.

В этом руководстве мы рассмотрели, как использовать ShellCheck в качестве отдельного инструмента из командной строки, а также как интегрировать его в Vim и Visual Studio Code.

см. также:

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий