Рубрики
Uncategorized

`shellcheck` и вы должны Слишком

Используя `Shellcheck` для здравомыслия. Теги с Linux, DevOps, учебником, Bash.

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