Разбор postgres -config.ini с использованием сценария оболочки ничего не возвращает, я что-то упустил? - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть эти параметры в файле postgres -config.ini:

PGUSER=usr
PGPASSWORD=pass
PGDATABASE=myDB
PGHOST=localhost
PGPORT=5432

Я хочу проанализировать его и подключиться к базе данных с помощью сценария оболочки (файл sh). Я использую команду source и grep следующим образом:

source <( grep = postgres-config.ini )

Однако, когда я попытался напечатать значения, используя echo $PGHOST, ничего не печаталось.

Может кто-нибудь помочь мне, что я делаю не так?

1 Ответ

0 голосов
/ 26 февраля 2020

Ваш source из подстановки процесса отлично работает для меня из командной строки:

$ cat foo.sh
PGUSER=usr
PGPASSWORD=pass
PGDATABASE=myDB
PGHOST=localhost
PGPORT=5432
$ source <(grep = foo.sh)
$ echo $PGHOST
localhost

Обратите внимание, что переменные оболочки не экспортируются, поэтому они не будут доступны в подпроцессах. Если они вам нужны в подпроцессах, попробуйте:

source <(sed '/=/!d;s/^/export /' foo.sh)

, который использует sed для добавления команды export в строки, которые соответствуют =.

Кроме того, где вы работаете source от? Если он есть в сценарии, помните, что переменные исчезнут после завершения сценария и не будут переданы родительскому процессу.

...