LINUX.ORG.RU

bash скрипт с *.env файлами

 , ,


0

1

Приветствую! Есть команда для PostgreSQL в bash скрипте:

echo $(psql -U $PG_USER -p $PG_PORT -t -c "SHOW server_version;")
Есть несколько файлов *.env в каталоге пользователя такого формата:
export PG_USER=user1
export PG_PORT=5432
export PG_USER=user2
export PG_PORT=5433
export PG_USER=user3
export PG_PORT=5434

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

Ответ на: комментарий от Legioner

Я бы от греха подальше внутри цикла ещё сабшелл бы запускал, и в нём уже сорсил файлы. Чтобы каждый цикл точно окружение было только из текущего файла, из предыдущих ничего не оставалось. Т.е. как-то так:

for e in ~/*.env; do
    (
    source "$e"
    psql --username="$PG_USER" --port="$PG_PORT" --tuples-only --command="show server_version"
    )
done
tiandrey ★★★★★ ()

баш обязательно использовать?

anonymous ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей