Установил так(просто из github не знаю как)
sudo apt-get install shellcheck
Запустил
shellcheck ./check-exit-status.sh
Пропускает
необъявленные переменные, ошибки связанные с проверкой условий - находит, дает рекомендации по использованию кавычек при вызове переменной...
Ошибку в Sha-bang - не заметил то же...
Использовал еще так, но это как-то громозко, это не то
#!/usr/bin/env bash
# Указываем интерпретатору какую программу вызвать, если скрипт исполняемый
# Не гарантируется, что на различных системах
# путь к bash будет одинаковым. Указывая env
# мы защищаем себя от таких неожиданностей
# Трассировка скрипта и выявление ошибок
# Делаем проверку на не объявленные переменные
set -o nounset
# Защита от игнорирования аварийного завершения команд
set -o errexit
function pause(){
#read -p "$*"
m="Нажмите любую клавишу или подождите 3 секунды для продолжения..."
read -n 1 -t 3 -p "$m"
}
echo
read -p "Введите путь к проверяемому файлу: " path
# bash -n "${path}" - эта опция не работает
echo
bash -v "${path}"
echo
echo "Статус завершения $?"
Пользователь добавил сообщение 04 Мая 2017, 16:03:10:
Еще небольшой скрипт для провекрки синтаксиса с утилитой
shellcheck#!/usr/bin/env bash
# Указываем интерпретатору какую программу вызвать, если скрипт исполняемый
# Не гарантируется, что на различных системах
# путь к bash будет одинаковым. Указывая env
# мы защищаем себя от таких неожиданностей
# Трассировка скрипта c раскрытием сложных команд и выявление ошибок
# Делаем проверку на не объявленные переменные
set -o nounset
# Защита от игнорирования аварийного завершения команд
set -o errexit
function pause(){
#read -p "$*"
m="Нажмите любую клавишу или подождите 3 секунды для продолжения..."
read -n 1 -t 3 -p "$m"
}
echo
read -p "Введите путь к проверяемому файлу: " path
echo
which shellcheck | 1>&2
if [[ "$?" -eq 1 ]]
then
sudo apt-get -y --force-yes update
sudo apt-get -y --force-yes install shellcheck
else
echo
fi
shellcheck "${path}"
echo
echo "Статус завершения $?"