envsubst 仅适用于部分变量

envsubst works only for part of the variables

我有一个包含一些 $VARIABLES 的文件,我想使用 envsubst 工具替换它。但就我而言,该工具仅替换了 +/- 一半的变量。

举例说明: 我有一个文件 .env 有一些变量:

MODE=HTTP
URL=https://some.url:0000/xyz

我用

$ source .env

现在,当两个变量都设置时,只有 MODE 被 envsubst 正确使用

echo $MODE 
HTTP
echo 'mode: $MODE' | envsubst
mode: HTTP


echo $URL
https://some.url:0000/xyz
echo 'url: $URL' | envsubst
url:

知道为什么 envsubst 不适用于所有变量吗?

我猜它只是偶然地为 $MODE 工作 - 因为你在 shell.

中有一个导出的 $MODE 变量

为了 envsubst 工作,它需要从您的 shell 继承环境变量,这仅适用于 exported 变量。

如果您的 .env 文件导出变量,它将起作用:

MODE=HTTP
URL=https://some.url:0000/xyz

export MODE
export URL