linux - 如何将 bash 多行 EVAL 语句输出到临时文件

标签 linux bash command-line

尝试用变量替换模板化 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/

相关文章:

linux - 从 Linux 终端命令行启动 Beyond Compare 4

linux - 如何检查一个文件是否是另一个文件的一部分?

linux - 删除目录中除列表中提到的文件之外的所有文件

linux - 如何在 Aspire V5-122P BIOS 中启用 VT-x/AMD-v?

linux - BASH 语法检查 Debug模式故障?

Python-使用 vlc 命令行播放 mp3 音频时出错

c - 即使我向它发送 SIGABRT,子进程也会正常退出

xml - 在没有 XML 解析器的情况下为最近修改的文件过滤 svn ls --xml

bash - 为单个命令取消设置环境变量

linux - 如何重定向 Debian 上以 start-stop-daemon 启动的进程的进程输出?