【发布时间】:2021-07-16 01:37:03
【问题描述】:
我想创建一个在文本文件中执行 bash 的模板系统。
例如,假设我们创建了一个简单的template.yaml 文件:
my_path: $(echo ${PATH})
my_ip: $(curl -s http://whatismyip.akamai.com/)
some_const: "foo bar"
some_val: $(echo -n $MY_VAR | base64)
希望执行每一个,结果可能如下所示:
my_path: /Users/roman/foo
my_ip: 1.2.3.4
some_const: "foo bar"
some_val: ABC
我将如何进行这样的替换?
想要这个的原因:
- 有很多值,执行 sed 或 envsubst 之类的操作并不实用
- 通常会应用一系列管道转换
- 配置文件将从多个来源填充,所有这些来源本质上都是 bash 命令
- 我确实需要创建一个特定格式的 yaml 文件(最终被另一个工具使用)
- 我可以创建别名等来提高可读性
- 通过让它在自己的 shell 中执行,所有半敏感值都不会存储在历史记录或文件中。
我不接受这种方法,并且很乐意尝试符合原因的推荐。
【问题讨论】:
-
不要回避上述链接问题中的
"Icky"方法。
标签: bash