Обычно, когда я работаю с исходным кодом в программном проекте, независимо от того, что это 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
Потребуются некоторые общие функции:
- Вы можете добавить новую группу команд в функцию Bash и легко вызовать функцию, например
./utility.sh your_new_function
Анкет - Вы можете добавить документацию в свои команды, чтобы их можно было показать, когда пользователь выполняет скрипт с
./utility.sh Помощь
-
./utility.sh Помощь
Команда может перечислить все доступные команды и их документацию. - Вы можете добавить частные команды, которые не отображаются пользователю и не могут быть вызваны извне.
- Сценарий может обрабатывать, когда пользователь входит в недействительную или нет команды.
- Сценарий имеет легкий механизм обработки ошибок.
- Сценарий соблюдает 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»