Создание кнопки в GridView

Например, у вас есть .env-файл с переменными и паролем для postgres DB. Как вы знаете, пароль должен быть ур-кодированным курсом% sing in password. Поэтому у нас есть проблема. Поскольку BASH игнорирует $, и мы всегда получаем неверный пароль для кодирования.

.env file


    DB_NAME=sone_db
    DB_PASS=A1$Bb%!Y$  # with dollar signs
    ...

bash script


    #!/bin/bash
    PSQL_COMMAND="DROP schema public CASCADE;"
    PSQL_COMMAND+="CREATE schema public;"

    set -o allexport
    # set source file and get access to all variables in .env
    source /path/.env

    ENCODED_PASS=$(python -c "from urllib.parse import quote; print(quote('$DB_PASS'))");
    psql postgres://$DB_USER:$ENCODED_PASS@$DB_HOST:5432/$DB_NAME -c "$PSQL_COMMAND"

    echo $DB_PASS   # returns A1%!Y$
    echo '$DB_PASS' # returns $DB_PASS
    echo "$DB_PASS" # returns A1%!Y$

    # disables variables
    set +o allexport

    # Wont work because BASH find $ sing in string and think that is variable, 
    so in first and last echo missed part $Bb%

Для этого вам необходимо в .env escape-строке файла в одиночной кавычки


    ...
    DB_PASS='A1$Bb%!Y$' 
    ...

-1
задан q-l-p 1 April 2019 в 23:51
поделиться