Установка Синтаксис Опции Пример использования
Окружение
ShellCheck — это утилита для статического анализа скриптов Bash, которая помогает находить ошибки и потенциальные уязвимости в коде. Она анализирует код на наличие ошибок, дает подсказки по форматированию кода и используется разработчиками для улучшения качества своих сценариев.
Рекомендации по использованию утилиты ShellChec можно найти на официальном сайте проекта в разделе Wiki https://www.shellcheck.net/wiki/.
Для установки утилиты необходимо выполнить команду (потребуются права администратора):
sudo dnf install ShellCheck
Утилита доступна для запуска через терминал при помощи команды следующего вида:
shellcheck [<опции>] <файл>
Основные опции утилиты:
Опции
Описание
-a, --check-sourced
Обычно shellcheck предупреждает только о проблемах в указанных файлах. С помощью этой опции будут также сообщаться о любых проблемах в исходных файлах.
-C, --color
Использовать цвет (автоматически, всегда, никогда). По умолчанию - автоматически.
-i, --include
Рассматривать только указанные коды.
-e, --exclude
Исключить указанные коды.
-f, --format
Формат вывода (checkstyle, diff, gcc, json, json1, quiet, tty).
--list-optional
Вывести список дополнительных проверок, отключенных по умолчанию.
--norc
Не искать файлы конфигурации .shellcheckrc.
-o, --enable
Включите необязательные проверки (или all).
-P, --source-path
Указывать пути для поиска исходных файлов.
-s, --shell
Указать диалект (sh, bash, dash, ksh).
-S, --severity
Минимальный уровень ошибок для рассмотрения (ошибка, предупреждение, информация, стиль).
-V, --version
Показать информацию о версии.
-W, --wiki-link-count
Количество ссылок на вики-страницу с дополнительной информацией.
-x, --external-sources
Использовать любой файл в качестве источника.
--help
Показать справку.
Рассмотрим создание и проверку Bash-скрипта с использованием утилиты shellcheck.
1. Для создания bash-скрипта введите команду:
nano script.sh
2. Вставьте в файл следующие строки и сохраните файл:
#!/bin/bash #declare variables MINARGS=2 E_NOTROOT=50 E_MINARGS=100 #echo values of variables echo $MINARGS echo $E_NONROOT exit 0;
3. Сохраните изменения. Сделайте скрипт исполняемым:
chmod +x script.sh
4. Проверьте скрипт с помощью shellcheck:
shellcheck ./script.sh In ./script.sh line 4: E_NOTROOT=50 ^-------^ SC2034: E_NOTROOT appears unused. Verify use (or export if used externally). In ./script.sh line 5: E_MINARGS=100 ^-------^ SC2034: E_MINARGS appears unused. Verify use (or export if used externally). In ./script.sh line 9: echo $E_NONROOT ^--------^ SC2153: Possible misspelling: E_NONROOT may not be assigned, but E_NOTROOT is. ^--------^ SC2086: Double quote to prevent globbing and word splitting. Did you mean: echo "$E_NONROOT" For more information: https://www.shellcheck.net/wiki/SC2034 -- E_MINARGS appears unused. Verify ... https://www.shellcheck.net/wiki/SC2153 -- Possible misspelling: E_NONROOT m... https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...
Утилита выдаст предупреждения и рекомендации по улучшению скрипта:
Предупреждение SC2034 означает, что переменная E_NOTROOT была объявлена, но нигде не используется в скрипте. Ее можно удалить.
SC2034: аналогичное предупреждение для переменной E_MINARGS. Она тоже объявлена, но не используется.
SC2153: переменная E_NONROOT не была объявлена ранее, но вместо нее существует переменная E_NOTROOT.
SC2086: рекомендуется заключать переменную в двойные кавычки ("$E_NONROOT"), чтобы предотвратить возможные проблемы с интерпретацией пробелов и специальных символов.
5. Для исправления ошибок внесите изменения в скрипт:
#!/bin/bash #declare variables E_NOTROOT=50 #echo values of variables echo $E_NOTROOT exit 0
6. После внесения исправлений повторите проверку с помощью команды:
shellcheck ./script.sh
Теперь утилита не должна выдавать никаких предупреждений, и скрипт будет готов к использованию.
Дата последнего изменения: 21.02.2025
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
Нажимая «Отправить запрос», вы соглашаетесь с условиями обработки персональных данных.
Вы будете получать только актуальную информацию по обновлению безопасности
Подписываясь на уведомления, вы соглашаетесь с условиями обработки персональных данных.
На ваш почтовый адрес отправлено письмо с подтверждением подписки.