我正在写一个bash脚本,用于在远程AMP堆栈上运行。该脚本需要访问PHP预定义的环境变量($ _ENV)。如何在bash脚本中访问PHP环境变量?
这就是我想要的:
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"
任何人都知道我做错了\
*** UPDATE *******
?我要指出,我从我的本地机器上调用这个脚本,像这样:
ssh -t [email protected] "myscript backup_remote_db"
“的MyScript”是我的可执行bash脚本的名称,而“backup_remote_db”是我传递给它的功能,包含上面的代码。
,这可能不是然而引起,因为当我赞同在脚本$ USER,这呼应了远程用户,而不是本地一个...
***更新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 !!辉煌 –
你不需要PHP来获取你的shell中的环境变量 –