尝试用变量替换模板化 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 做到这一点的。
最佳答案
这对我不起作用,但我所做的是这个
renderTemplate() {
eval "cat <<EOF
$(<${1})
EOF"
}
baseFileName=$(basename $fileName)
templateOutput=`renderTemplate ${baseFileName}`
echo "${templateOutput}"
无论如何,我都将其用作临时文件,所以我要做的就是保存到变量,然后将该变量输入到命令中以将模板作为文件应用。这样它就只存储在内存中。这是另一个 cli 的中间件 cli,用于在应用内存中 Web 托管文件之前将变量替换添加到其中。
感谢您的帮助。
关于linux - 如何将 bash 多行 EVAL 语句输出到临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56925598/