gpt4 book ai didi

php - bash 和 php-cli 之间的变量

转载 作者:行者123 更新时间:2023-11-29 09:41:36 25 4
gpt4 key购买 nike

我想在 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

效果很好。但是有一个问题:我似乎无法将 getenv 存储在变量中。

#!/bin/bash
echo "This is bash"
export VAR="blabla"

/usr/bin/php << EOF
<?php

$var = getenv("VAR");
echo $var;

?>
EOF

给我这个错误:PHP Parse error: syntax error, unexpected '=' in - on line 3

即使我尝试定义 $var = "hello"这样的基本变量,我也会遇到同样的错误;

最佳答案

您的问题是 bash 和 php 都对变量使用美元符号。当你在你的 heredoc 中这样说时:

$var = getenv("VAR");

bash 试图用 shell 变量 var 的值替换 $var 并且它可能是空的;结果是 PHP 看到这样的东西:

<?php

= getenv("VAR");
echo ;

?>

因此出现“意外的‘=’”错误。

尝试转义 PHP 中的美元符号:

#!/bin/bash
echo "This is bash"
export VAR="blabla"

/usr/bin/php << EOF
<?php

\$var = getenv("VAR");
echo \$var;

?>
EOF

bash heredoc 像双引号字符串一样评估变量。

关于php - bash 和 php-cli 之间的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5940639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com