Рубрики
Uncategorized

Шаблон сценария оболочки

Запишите все в сценарии оболочки Обычно, когда я работаю с исходным кодом в программном обеспечении Pro … с меткой Bash, Linux, DevOps, Tips.

Обычно, когда я работаю с исходным кодом в программном проекте, независимо от того, что это Java, Python или любые другие языки, существуют некоторые задачи, настроенные инфраструктурой, которые нуждаются в использовании сценария оболочки.

Очень полезно записывать все команды оболочки, которые включают исходный код. Например, когда вы инициализируете проект NextJS, вы будете писать пряжа создать Next-App Your-App Анкет Это не пустая трата времени, чтобы записать это в сценарии утилиты, чтобы вы и ваш друг знали все команды, которые включают проект.

#!/bin/bash

init_project() {
    yarn create next-app your-app
}

Предположим, что у вас есть команда, которая будет использоваться в инструментах конфигурации CI/CD, таких как Gitlab CI, вы пишете всю команду Core в этом скрипте оболочки и проводят Gitlab CI, вызывая ваш скрипт.

# In your utility.sh
build_and_deploy_to_k8s() {
    yarn build
    build_docker_image
    publish_docker_image
    deploy_to_k8s
}
# In your .gitlab-ci.yml
deploy:
    stage: deploy
    script:
        - ./utility.sh build_and_deploy_to_k8s

С этой практикой вы усердно заявляете почти все в исходном коде. Будущее, которое вы и ваши друзья поделились одинаковыми знаниями о том, что происходит во всем жизненном цикле проекта, и сможет исследовать и воспроизводить любую проблему.

Чтобы сделать это, ваш Utility.sh Потребуются некоторые общие функции:

  1. Вы можете добавить новую группу команд в функцию Bash и легко вызовать функцию, например ./utility.sh your_new_function Анкет
  2. Вы можете добавить документацию в свои команды, чтобы их можно было показать, когда пользователь выполняет скрипт с ./utility.sh Помощь
  3. ./utility.sh Помощь Команда может перечислить все доступные команды и их документацию.
  4. Вы можете добавить частные команды, которые не отображаются пользователю и не могут быть вызваны извне.
  5. Сценарий может обрабатывать, когда пользователь входит в недействительную или нет команды.
  6. Сценарий имеет легкий механизм обработки ошибок.
  7. Сценарий соблюдает Shellcheck стандартный

Я делюсь своим шаблоном, который работает для меня в большинстве случаев в моем GitHub , Пожалуйста, проверьте это.

$ ./example.sh

alert
    To print a normal message with a cute cow.

all_commands
    Show all available commands

error
    To print an error message with a cute cow, and then exit the script with non-zero exit code

ex_happy
    Test happy case

ex_oops
    What will happens when there is an error that your forgot to handle with && and ||

ex_public_command
    All function that starts with _ will now be listed and cannot be invoked externally.
 But you can still invoke the function inside the script itself.

ex_success_or_failure
    This example show you the error handling behavior.
 You can use || and && to handle in case your command fails.
 If a command in a pipe fails, all the pipe also fails

ex_unhappy
    Test the "error" command

greeting_n_times
    your documentation

help
    Show all available commands and their documentation

$ ./example.sh greeting_n_times

 ______________________
  < Missing 1st parameter for name of the person >
 ----------------------
        \   ^__^
         \  (xx)\_______
            (__)\       )\/
             U  ||----w |
                ||     ||

$ ./example.sh greeting_n_times John

 ______________________
  < Missing 2nd parameter for the number of time to say hello >
 ----------------------
        \   ^__^
         \  (xx)\_______
            (__)\       )\/
             U  ||----w |
                ||     ||


$ ./example.sh greeting_n_times John 3
Hello John
Hello John
Hello John

Оригинал: «https://dev.to/asinkxcoswt/shell-script-template-1fj4»