Evgenii Legotckoi
2 декабря 2018 г. 20:58

Использование getopts в bash скриптах для передачи параметров

Содержание
  1. 1.

При разработке сайта для автоматизации процесса деплоя написал несколько bash скриптов.

Для настройки поведения скриптов использую передачу аргументов, которые в bash скрипте разбираются библиотекой getopts.


Getopts

Как правило, скрипты используют getopts для анализа аргументов, переданных им. Когда вы указываете args в командной строке, getopts анализирует эти аргументы вместо скрипта и дальше уже скрипт использует проанализированные данные, которые были разобраны getopts .

Например, в своём случае я использую несколько действий, которые должны быть выполнены скриптом.

  1. while getopts p:dicmz option
  2. do
  3. case "${option}"
  4. in
  5. p) PASSWORD=${OPTARG};; # Password for reload services: gunicorn and celery
  6. d) DEPLOY_PROJECT_PACKAGES=true;; # Deploy local projects packages
  7. i) INSTALL_REQUIREMENTS=true;; # Install or update new packages from requirements
  8. c) COLLECTSTATIC=true;; # Execute collectstatic
  9. m) MIGRATE=true;; # Execute migrate
  10. z) INGORE_BACKUP=true;; # WARNING: Be careful with this option.
  11. # Do not use it, when execute migrations or add new application or git submodule
  12. esac
  13. done

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

Таким образом скрипт можно запустить с параметрами таким образом

  1. ./deploy.sh -icm -p mypassword

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

Переданный параметр не требующий аргумента будет проверяться в условиях так

  1. if [ "$INGORE_BACKUP" ]
  2. then
  3. # Deployment without backup"
  4. else
  5. # Execute backup
  6. fi

Рекомендуемые статьи по этой тематике

По статье задано0вопрос(ов)

1

Вам это нравится? Поделитесь в социальных сетях!

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь