【发布时间】:2018-06-08 22:00:36
【问题描述】:
我有一个包含令牌变量的文件。当我们切换环境时,我们希望为我们所处的环境正确替换这些标记。
如何在 Linux shell 中执行此操作?我在考虑 awk 或 sed。
例子:
文件有这个数据:
DB_HOST=__HOST__
DB_PASSWORD=__PASSWORD__
我想读取这个文件,识别__HOST__并将其替换为环境变量$(HOST)。我们将从两个下划线之间的匹配字符串中获取环境变量名称。
有没有人知道我们如何做到这一点?
【问题讨论】:
-
请避免 "Give me the codez: 已经被问过和回答过很多次的问题,你必须努力避免找到答案。另见How much research effort is expected of Stack Overflow users?我们不应该提供 LMGTFY 答案,但这里是:bash replace token in a file site:stackoverflow.com
-
@jww 我已经研究了好几个小时了。我并不是想说给我代码本身,但我只是没有列出我尝试过的每一步。我尝试使用 sed 来查找模式,我能够从两个下划线之间获取字符串,我该如何使用它?我尝试了 awk,但无法弄清楚如何使用下划线并将 DB_HOST 替换为 $(DB_HOST)。我很少使用 bash。我有点希望只有一个我可以使用的命令行工具可以开箱即用地做到这一点。 Stack Overflow 是我最后的选择。我讨厌问问题。如果你愿意,请投反对票
-
@Decius:有一个常用的命令行工具几乎可以做到这一点;我将它添加到我的答案中,以及一些使用说明。对该问题的补偿性投票。
-
就我个人而言,我认为我会选择原生格式的 envsubst,除非你真的需要使用下划线。
-
你为什么要这样做而不是让你的基本文件是
DB_HOST=$HOST而不是DB_HOST=__HOST__,然后在使用它之前必须用$HOST的值替换__HOST__?跨度>