Linux 工具命令(04): envsubst2 一个比 envsubst 更省心的配置渲染工具
Linux 工具命令(04): envsubst2 一个比 envsubst 更省心的配置渲染工具
如果在 公众号 文章发现状态为 已更新, 建议点击 查看原文 查看最新内容。
状态: 未更新
原文链接: https://typonotes.com/posts/2023/02/22/envsubst2-usage/
对于配置文件的渲染, 通常我们会使用 envsubst
。 这个工具基本上在 Linux 各个发行版上都可以通过官方源进行安装。
- 安装
|
|
- 渲染
- 默认模式, 这种模式会替换所有 变量站位符, 包括
$abc
或者${abc}
, 如果变量不存在, 则使用 空字符串 进行替换。 - 白名单模式, 这种模式可以指定 需要替换 的 白名单变量。 这种模式就是的麻烦点在于 当白名单变量 太多的时候, 命令看起来就乱糟糟的。
|
|
更多参考 Linux 工具命令(03): 使用 envsubst 渲染配置文件
为什么使用 envsubst2
使用 envsubst
进行模版渲染, 如果要保留某些 变量格式的字符串 , 就有点麻烦了。 如果你搞过 Nginx
的配置, 应该就能理解我说的是什么情况。
|
|
如果是用 envsubst
替换,
- 白名单模式, 指定
${DNS_RESOLVER}
替换。
- 当 1. 需要替换的变量多, 2. 需要替换的变量随时可能变 的时候, 维护起来就会很麻烦。
- 或者 转义 不需要被替换的的
$
符号。 例如\$host
.
- 这样维护模版就会非常的麻烦。
我们的工作, 需要 更简单, 更通用, 更无脑。 不应该在这些琐碎的事情上浪费时间。
于是便又了 envsubst2
。
envsubst2
的使用方式
envsubst2
使用了 ${[a-zA-Z0-9_]+}
作为正则匹配的 模版。 意味着, 只有类似 ${key1}
这种带有花括号的变量才会被渲染
这样做,
- 兼容
envsubst
的使用使用, 迁移过来更方便。 - 减少认知压力, 不用在担心
$key1
和${key1}
这样 有没有花括号 的问题了。
默认情况下, envsubst2
只会读取 存在 的 环境变量 进行替换。 如果 变量存在, 且值为空 也会替换。
注意: 变量 不存在 和 值为空 是两种不同的状态。
$ envsubst2 -h
version: v0.1.8+sha.5acb37b-devel
Usage:
envsubst2 [flags]
Flags:
--force-replace replace all the placeholders, even if their value is empty (default true)
-h, --help help for envsubst2
--input string input file
--output string output file, os.Stdout if empty.
当前版本, 支持以上 3 个参数
--input
: 输入文件(模版文件)。--outpu
: 输出文件, 内容保存的地方。 如果没有指定, 则为 屏幕标准输出。--force-replace
: 强制替换所有变量, 即使变量值为空 或者 没有被设置。默认 替换所有
${key1}
, 不论其值是否为空。
- 但是可以通过开关
--force-update=false
关闭。 当关闭状态时,${key1}
值为空时 不替换 , 即在文件中保留字面值。
Demo 案例
模版
My home path is ${HOME}.
My user is ${USER}.
This variables doesn't exist: ${DONT_EXIST}
This variables is empty: ${EMPTY}
渲染
|
|
结果
My home path is /Users/devops.
My user is devops.
This variables doesn't exist: ${DONT_EXIST}
This variables is empty:
源码
在 Github 上: https://github.com/tangx/envsubst2
其实没什么, 就是一个正则匹配。
- 原文链接:https://typonotes.com/posts/2023/02/22/envsubst2-usage/
- 本文为原创文章,转载注明出处。
- 欢迎 扫码关注公众号
Go与云原生
或 订阅网站 https://typonotes.com/ 。 - 第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「在看」,感谢支持。