【发布时间】:2019-07-07 19:50:03
【问题描述】:
尝试变量替换模板化 yaml 文件。
我正在使用 eval 获取环境 shell 变量并动态替换文件中的内容。我不知道如何获取这个输出并保存到文件中。
我只想获取评估的输出并保存到文件中。
eval "cat <<EOF
$(<${baseFileName})
EOF"
示例 test.yaml
---
value: ${PORT}
Bash 环境变量:
PORT=8888
输出 temp.test.yaml
---
value: 8888
现在代码只会将评估后的文本打印到控制台。
我试过了。
eval "cat <<EOF
$(<${baseFileName})
EOF" > $newBaseFileName
但没有快乐。甚至没有创建文件。
我不使用 sed 的原因是因为该文件可能有无限的变量减速,并且我想替换任何与定义的 bash 变量或环境变量匹配的值。这是模板引擎的一部分。在我的一生中,我不记得我以前是如何使用纯 bash 做到的。
【问题讨论】:
-
请提供更多细节。首先,评估的输出是什么样的?见minimal reproducible example
-
@wjandrea 添加,因为你不明白我在说什么。请参阅上下文添加。
-
您的示例代码实际上对我有用。请发minimal reproducible example
-
PORT="$PORT" envsubst < test.yaml或export "$PORT"在调用envsubst之前。如果不清楚如何让它完全按照您的意愿行事,请以此为起点提出一个新问题。 -
你收到
bash: syntax error near unexpected token 'newline'了吗?然后检查你的变量newBaseFileName,也许先写信给/tmp/envtest.out。
标签: linux bash command-line