【问题标题】:How to create PHP template with bash variables如何使用 bash 变量创建 PHP 模板
【发布时间】:2026-01-13 07:30:01
【问题描述】:

我需要在 bash 脚本中读入一个 php 模板文件,然后替换模板中的一些变量(可以是任何东西,比如$(variable)),最后将整个内容输出到一个新文件中。

我原来有

stuff=$stuff bash templatefile > newfile

对于非 PHP 文件

cat <<END
//stuff
END

但我的 php 模板文件看起来像

#!/usr/bin/php
<?php
//lots of php variables, so can't use bash variables that have the same $ prefix
?>

因为 PHP 也像 bash 一样为它的变量使用 $ 前缀,所以我不能轻易地传入参数。我该怎么办?

【问题讨论】:

  • 你能举个例子作为输入和期望输出吗?
  • @Kent 我的输入是 php 文件,输出是带有替换变量的 php 文件 - 但是我不确定如何传递 bash 变量以进行替换。
  • 我认为关键问题是:为什么你要这样做?
  • @Sorpigal 我在设置新的虚拟主机时尝试创建一个 bash 脚本,该脚本会为该新虚拟主机创建一个自定义的 php 脚本。这本来是一个简单的替换,所以我认为上下文无关紧要。
  • @xiankai:这很重要,因为你的所作所为在我脑海中敲响了警钟。如果您的 PHP 脚本需要外部工具来修改它才能工作,它就会损坏。代码就是代码;为什么不让 PHP 脚本自己定制呢?至少让它读取一个配置文件。然后以任何你喜欢的方式生成一个新的配置文件。无需编写shell代码即可生成php代码;这太疯狂了。

标签: php bash shell sed


【解决方案1】:

试试这个答案: Bash Templating: How to build configuration files from templates with Bash?

这允许您使用 ${varname} 而不是 $varname

【讨论】:

  • 我看到了那个问题,但不幸的是,答案没有关于将整个替换文件输出到新文件的任何内容。
  • 您只需要将输出重定向到新文件。 ">whatever.php"
  • 我最终使用了提问者的第二个命令,如下所示:cat template.php | sed 's|\${stuff}|'$stuff'|' > 新文件.php。感谢您朝正确的方向轻推!