我正在寫一個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中的環境變量 –