Я начну, сказав, что было какое-то время, так как я был традиционным 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»