Privacy policyContactsAbout siteOpinionsGitHubDonate
© EVILEG 2015-2018
Recommend hosting

Using getopts in bash scripts to pass parameters

Linux, Bash, getopts

When developing a site to automate the deployment process, I wrote several bash scripts.

To customize the behavior of scripts, I use the transfer of arguments, which are handled in the bash script by the getopts library.


Scripts typically use getopts to analyze the arguments passed to them. When you specify args on the command line, getopts analyzes these arguments instead of a script, and then the script uses the parsed data that getopts parsed.

For example, in my case I use several actions that must be performed by the script.

while getopts p:dicmz option
    case "${option}"
    p) PASSWORD=${OPTARG};;                 # Password for reload services: gunicorn and celery
    d) DEPLOY_PROJECT_PACKAGES=true;;       # Deploy local projects packages
    i) INSTALL_REQUIREMENTS=true;;          # Install or update new packages from requirements
    c) COLLECTSTATIC=true;;                 # Execute collectstatic
    m) MIGRATE=true;;                       # Execute migrate
    z) INGORE_BACKUP=true;;                 # WARNING: Be careful with this option.
                                            # Do not use it, when execute migrations or add new application or git submodule

I am running a project on the site, installing or updating required packages in a project, building a new statics, migrating a database and, if necessary, ignoring the creation of a project backup, although I rarely use this. It is better to be safe once again and perform a backup.

Thus, the script can be run with parameters in this way.

./ -icm -p mypassword

In this case, a password will be transferred to perform specific functions requiring a password, and installation or updating of required packages, static build and database migration will be performed.

The passed parameter not requiring an argument will be checked in the conditions so

    # Deployment without backup"
    # Execute backup


Only authorized users can post comments.
Please, Log in or Sign up
Last comments
Feb. 14, 2019, 6:41 p.m.

Спасибо огромное! Заработало!
Feb. 12, 2019, 9:26 a.m.

Сам разборался, спасибо.
Feb. 12, 2019, 8:19 a.m.

День добрый! Можешь выложить форму mainwindow.ui от урока? Заранее спасибо
Feb. 11, 2019, 10:51 a.m.
Евгений Легоцкой

Нет, у меня проблема с жёстким диском случилась, занимался восстановлением ПК, ещё пару вечеров придётся этим заниматься, увы.
Now discuss on the forum
Feb. 15, 2019, 9:22 p.m.

Доброй ночи.Скромно напоминаю о своём вопросе...
Feb. 15, 2019, 3:36 p.m.
Евгений Легоцкой

Ну я тут нашёл одно решение, но сам его не проверял. Вам нужно помещать фамилии скорее всего в ячейки заголовка, и потом просто перерисовывать их QHeaderView * header = m_ui->tableWidget...
Feb. 15, 2019, 7:53 a.m.
Евгений Легоцкой

Добрый день! Не работал с remoteobjects, поэтому глянул документацию, чтобы рассмотреть, что это за зверь. После просмотра документации сложилось стойкой впечатление, что это вполне возм...
Feb. 14, 2019, 6:28 p.m.

Нашел решение на Java. Удалось интегрировать в проект сервиса на Qt, теперь из Qt запускаю Java-код акселерометра.
Feb. 14, 2019, 11 a.m.
Евгений Легоцкой

ok. I see. You changed related name Try this {% if goal.joined.all|user_in:request.user %}
Join us in social networks

For registered users on the site there is a minimum amount of advertising