首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bash和php-cli之间的变量

bash和php-cli之间的变量
EN

Stack Overflow用户
提问于 2011-05-10 01:57:53
回答 4查看 8.8K关注 0票数 2

我想在一个脚本中将变量从bash传递给php。我知道这是可能的两个文件和$argv在php中,但我真的想把脚本放在一个文件。这就是我现在得到的:

代码语言:javascript
复制
#!/bin/bash
echo "This is bash"
export VAR="blabla"

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

echo getenv("VAR");

?>
EOF

它工作得很好。但有一个问题:我似乎不能将getenv存储在变量中。

代码语言:javascript
复制
#!/bin/bash
echo "This is bash"
export VAR="blabla"

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

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

?>
EOF

出现以下错误: PHP Parse error:语法错误,第3行出现意外的'=‘

如果我甚至尝试定义一个像$var =“hello”这样的基本变量,我都会得到同样的错误;

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-10 21:10:19

如果您阻止shell解释PHP脚本,请引用此处文档的分隔符:

代码语言:javascript
复制
/usr/bin/php << 'EOF'
<?php $var = getenv("VAR"); echo $var; ?>
EOF
票数 2
EN

Stack Overflow用户

发布于 2011-05-10 02:07:09

您的问题是bash和php都使用美元符号来表示变量。当你在你的文档中这样说的时候:

代码语言:javascript
复制
$var = getenv("VAR");

bash试图将$var替换为外壳变量var的值,但该值可能为空;结果是PHP会看到如下所示:

代码语言:javascript
复制
<?php

= getenv("VAR");
echo ;

?>

因此出现了“意外的'='”错误。

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

代码语言:javascript
复制
#!/bin/bash
echo "This is bash"
export VAR="blabla"

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

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

?>
EOF

bash heredoc就像双引号字符串一样计算变量。

票数 5
EN

Stack Overflow用户

发布于 2011-05-10 02:10:54

您遇到了一个与处理问题的方式相关的陷阱,即在一个文件中放入两个脚本,一个用于Bash,另一个用于PHP。问题是$var是由外壳解释的,在需要语句的地方留下了= getenv("VAR");,因此出现了语法错误。

另一件事是,只要您将两个脚本保存在一个文件中,您就不需要从env中提取VAR (我认为从一开始这不是一个好主意)。

下面是你如何使用它(未经过测试):

代码语言:javascript
复制
#!/bin/bash
echo "This is bash"
VAR="blabla" # normal variable, no need to export

/usr/bin/php << EOF
<?php
\$var = "$VAR"; # access variable
echo \$var;
EOF
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5940639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档