Скрипт django bash передает требования в качестве аргументов bash - PullRequest
0 голосов
/ 18 октября 2019

я создал этот bash-скрипт для создания проектов django

#!/bin/bash
PROJECT_NAME=$1
ENV_NAME=$2
PROJECT_DIR="$HOME/$PROJECT_NAME"
echo $PROJECT_NAME;
echo $ENV_NAME;
mkdir -p "$PROJECT_NAME"
cd "$PROJECT_DIR"
python3 -m venv "$ENV_NAME"
. "$PROJECT_DIR/$ENV_NAME/bin/activate"
pip install django django-extensions django-debug-toolbar python-memcached djangorestframework
pip freeze > "$PROJECT_DIR/requirements.txt"
django-admin startproject "$PROJECT_NAME"
mkdir -p public
cd "$PROJECT_DIR/$PROJECT_NAME"
pwd
mkdir -p templates
mkdir -p static
cd templates
touch index.html base.html
cd ..
pwd
cd "$PROJECT_NAME"
mv settings.py settings_base.py
touch settings.py settings_local.py settings_local_sample.py
ls

когда я запускаю исходный файл.sh имя_проекта env он создает проект, я хочу передать требования проекта в качестве аргумента массива вБаш, как я могу это сделать

1 Ответ

0 голосов
/ 18 октября 2019

Аргументы команды находятся в массиве $@. Таким образом, вы можете передать требования в качестве дополнительных аргументов командной строки. Затем, после установки PROJECT_NAME на первый аргумент, выполните shift, чтобы удалить первый аргумент из $@. Затем, после установки ENV_NAME на (новый) первый аргумент, выполните shift еще раз. Тогда $@ будет содержать только оставшиеся аргументы = список требований, поэтому вы можете использовать его с pip install.

Незначительные изменения в вашем скрипте:

#!/usr/bin/env bash
PROJECT_NAME=$1; shift
ENV_NAME=$1; shift
...
pip install "$@"

И вызовсценария с:

path/to/script.sh the_project_name the_env_name django django-extensions django-debug-toolbar python-memcached djangorestframework

Если список требований уже находится в массиве Bash в контексте, где вы вызываете сценарий, то вы можете передать содержимое массива в качестве аргументов команды:

path/to/script.sh the_project_name the_env_name "${requirements[@]}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...