Обычно, когда я работаю с исходным кодом в программном проекте, независимо от того, что это 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»