我有一个nginx conf
文件,由于使用环境变量,我有一个 shell 脚本回显,这个文件我称为nginx.conf.template
,然后我将回显的结果放入实际的nginx.conf
,请参见下面的 shell 脚本:
#!/bin/sh
function subst() { eval echo -E "$2"; }
mapfile -c 1 -C subst < nginx.conf.template > nginx.conf
我对此的唯一问题是它删除了所有缩进空格,我想这会导致问题,但我运行此nginx
服务器的 docker 容器似乎很好。我没有缩进有关系吗?如果确实很重要, echo 可以保留所述空格吗?
它不会删除你所有的空白。它将每个空白块减少到一个空格。对于你的大多数人来说,
nginx.conf
这不会伤害任何东西。如果您引用了带有多个空格的字符串,那么上面的命令也会更改这些字符串。grep
您可以通过在模板中引用引号来轻松检查。与其调整以保留空白,不如将模板构建为脚本中的heredoc
echo
可能更容易。去除多余的空白可能有助于减少嵌入式环境中的内存占用,但除非您的资源严重受限,否则维护从模板到实际配置的格式将使调试更加愉快。