Я начну, сказав, что было какое-то время, так как я был традиционным Sysadmin. За последние несколько лет я перешел от «инженера-производственного инженера» к «Engine Engineer», затем к говорящему голове ака разработчика. (Это должно быть языком и щека, но сохраняя технические, как защитник разработчика трудно.) Я все еще пишу некоторый код и сценарии, но все вообще у меня нет производственной среды для ухода и корма. Я скажу это, я скучаю по нему, и, возможно, однажды я вернусь, чтобы помочь запустить команду, но сейчас я не в правильном карьере.
Но я расступлен; Этот пост о Shellcheck и сила, которая может прийти. Как разработчик адвоката, я пишу много кода, который склеивает вещи вместе, я провожу время на Linux и Mac, Bash это очевидный выбор. Я начал говорить с людьми на разных конференциях, к которым я иду, и идея ЛИНТИНСКИЙ код по-прежнему считается практикой разработчика вместо операторской практики. Я здесь, чтобы попытаться установить запись прямо.
Почему?
Первое, первое, Почему Отказ Стандартизация методов кодирования, и да, вы сейчас код, сэкономит вам от безумного накладного и технического долга в будущем. Когда ваши команды ‘ Bash Сценарии начинают выглядеть так же, легче читать, и с этим люди начинают обращать внимание на то, что происходит вместо Где сделать или ; является; Shellcheck Обеспечить это. Я должен сказать, вы можете перевернуть их в Shellcheck Но это командное решение и вне сферы этого поста. (Читайте вверх здесь Если вам нужно пойти вниз по этому пути.)
Как?
Теперь мы приедем в Как Отказ Есть горсть способов получить это , APT , yum. , Домашний вид И даже а Докер Контейнер может быть запущен для запуска этого приложения. Это действительно легко добавить к вашему CI/CD-трубопроводу, вытягивая каждый .sh Файл и работает Shellcheck против этого.
Добавив его к вашему Makefile просто:
check-scripts:
# Fail if any of these files have warnings
shellcheck myscripts/*.sh
И даже Travis CI, он встроил, просто добавив это к вашему .travis.yml.yml.yml :
script: # Fail if any of these files have warnings - shellcheck myscripts/*.sh
Лично я использую Докер Контейнер на моем местном ноутбуке. Я написал простой скрипт, который я назвал Shellcheck.sh и в любое время я сохраняю сценарий .sh. Я бегу Shellcheck.SH Script.Sh против этого. Как вы можете видеть, это очень простой.
#!/bin/bash
if [ $# -eq 0 ]
then
echo "You need to add an script to this check, shellcheck.sh script.sh"
exit 1
else
if [[ "$(ping www.google.com -c 1 | grep '100% packet loss' )" != "" ]]
then
echo "You can't seem to connect to the internet, you should proobly fix that."
exit 1
fi
docker pull koalaman/shellcheck:latest
docker run -v "$PWD:/mnt" koalaman/shellcheck "$1"
fi
Это дает мне разуме, что мой код стандартизирован и просто «работает», как и ожидалось. Выход Shellcheck также говорит вам, почему ваш оскорбительный код, с Выделенная страница Wiki здесь С некоторыми очень явными, почему вы не должны делать это таким образом. Я приветствую главный разработчик Видар Холн и команда, чтобы помочь использовать лучшие разработчики.
Заворачивать
Честно говоря, я просто здесь, чтобы убедить вас, дорогой читатель, чтобы дать это линьку выстрел. Накладные расходы минимальны, и преимущества огромны. Это одна из тех вещей, которые вы не должны тратить время на обсуждение, это просто сделает вашу жизнь, и жизнь вашей команды проще. Вы можете получить его в CI, запустите локально и убедитесь, что каждый пишет свои сценарии с унифицированным узором только с работой.
Примечание : Да, я провел вышеуказанный скрипт через Shellcheck слишком.
Оригинал: «https://dev.to/jjasghar/shellcheck-and-you-should-too-i29»