use*_*595 2 php variables bash export environment-variables
我想在 1 个脚本中将变量从 bash 传递到 php。我知道 php 中可以有 2 个文件和 $argv,但我真的很想将脚本放在 1 个文件中。这就是我现在得到的:
#!/bin/bash
echo "This is bash"
export VAR="blabla"
/usr/bin/php << EOF
<?php
echo getenv("VAR");
?>
EOF
Run Code Online (Sandbox Code Playgroud)
效果很好。但有一个问题:我似乎无法将 getenv 存储在变量中。
#!/bin/bash
echo "This is bash"
export VAR="blabla"
/usr/bin/php << EOF
<?php
$var = getenv("VAR");
echo $var;
?>
EOF
Run Code Online (Sandbox Code Playgroud)
给我这个错误: PHP 解析错误:语法错误,意外的 '=' in - on line 3
如果我尝试定义像 $var = "hello"; 这样的基本变量,我也会得到同样的错误。
您的问题是 bash 和 php 都使用美元符号作为变量。当你在heredoc中这样说时:
$var = getenv("VAR");
Run Code Online (Sandbox Code Playgroud)
bash 尝试替换$var为 shell 变量的值var,但该变量可能为空;结果是 PHP 看到这样的东西:
<?php
= getenv("VAR");
echo ;
?>
Run Code Online (Sandbox Code Playgroud)
因此出现“意外的'='”错误。
尝试在 PHP 中转义美元符号:
#!/bin/bash
echo "This is bash"
export VAR="blabla"
/usr/bin/php << EOF
<?php
\$var = getenv("VAR");
echo \$var;
?>
EOF
Run Code Online (Sandbox Code Playgroud)
bash 定界文档评估变量就像双引号字符串一样。