Я пишу сценарий bash, предназначенный для работы в удаленном стеке AMP. Скрипт должен получить доступ к предопределенной переменной среды PHP ($ _ENV).Как получить доступ к переменным среды PHP в сценарии bash?
Это то, что я хочу:
db_host=$(php -r 'echo $_ENV{DATABASE_SERVER};')
echo "The DB Host is: $db_host"
# output: "The DB Host is: internal-db.s173785.gridserver.com"
Это то, что я получаю вместо этого:
# METHOD 1
db_host1=$(php -r 'echo $_ENV{DATABASE_SERVER};')
echo "The DB Host is: $db_host1"
# output: "The DB Host is: "
# METHOD 2
db_host2=`php -r 'echo get_env(DATABASE_SERVER);'`
echo "The DB Host is: $db_host2"
# output: "The DB Host is: "
Ни один метод работает, обе переменные возвращаются пустыми. Я знаю, что эта переменная PHP установлен, потому что, когда я печатаю это в терминал (после ssh'ing на сервер), я получаю ожидаемое значение:
$ php -r 'echo $_ENV{DATABASE_SERVER};'
# outputs: "internal-db.s173785.gridserver.com"
Технически эти методы должны работать, потому что мне удалось чтобы получить эту работу в моем сценарии:
php_user=$(php -r 'echo getenv("USER");')
echo php_user is $php_user
# outputs: "php_user is myusername"
Каждый знает, что я делаю неправильно \
*** ОБНОВЛЕНИЕ *******
?я должен упомянуть, что я ссылаться этот сценарий из моей локальной машине, так как:
ssh -t [email protected] "myscript backup_remote_db"
«MyScript» это имя моего исполняемого Баш скрипт, и «backup_remote_db» функция я передаю к нему, который содержит код выше.
Это не может быть причиной, однако, потому что, когда я эхо $ USER в сценарии, это эхо удаленного пользователя, а не локальный один ...
*** UPDATE 2 ******
Вот как я, наконец, получил это работает:
db_host=$DATABASE_SERVER
echo "The DB Host is $db_host"
# output: "The DB Host is: internal-db.s173785.gridserver.com"
Но только если я делаю эту корректировку как вызывается скрипт:
ssh -t [email protected] ". /etc/profile; myscript backup_remote_db"
Что печатает 'echo $ DATABASE_SERVER'? –
Я получаю internal-db.s173785.gridserver.com !!brilliant –
Вам не нужен php для получения переменных окружения в вашей оболочке –