高级开发运维测试必须掌握的envsubst命令使用详解

2023-12-05 0 822
目录
  • 0 | 是什么
  • 1 | 怎么用
  • 2 | 举例说明

0 | 是什么

envsubst 缩写来自于 environment variable substitution,即环境变量替换,是一个用于替换 shell 环境变量的工具。

它可以读取输入并在其中查找环境变量,然后将这些环境变量替换为其对应的值,最后输出结果。在Linux和Unix操作系统上默认自带。

通过这个命令,我们可以配置一些模板文件,然后通过定义环境变量的方式,将变量传递到模板文件中,从而动态地生成配置文件。在 linux 运维里,属于比较高阶但是很实用的一个命令。

1 | 怎么用

Usage: envsubst [OPTION] [SHELL-FORMAT]
Substitutes the values of environment variables.
Operation mode:
-v, –variables output the variables occurring in SHELL-FORMAT
Informative output:
-h, –help display this help and exit
-V, –version output version information and exit
In normal operation mode, standard input is copied to standard output,
with references to environment variables of the form $VARIABLE or ${VARIABLE}
being replaced with the corresponding values. If a SHELL-FORMAT is given,
only those environment variables that are referenced in SHELL-FORMAT are
substituted; otherwise all environment variables references occurring in
standard input are substituted.
When –variables is used, standard input is ignored, and the output consists
of the environment variables that are referenced in SHELL-FORMAT, one per line.

翻译一下:

在正常操作模式下,标准输入被复制到标准输出,对$VARIABLE或${VARIABLE}形式的环境变量的引用被替换为相应的值。如果给出了 SHELL-FORMAT,则仅替换那些在 SHELL-FORMAT 中引用的环境变量;否则,标准输入中出现的所有环境变量引用都将被替换。

使用–variables时,标准输入被忽略,输出由 SHELL-FORMAT 中引用的环境变量组成,每行一个。

2 | 举例说明

首先,假设我有一个模板文件如下:

$ cat envsubst-template.yaml
apiVersion: v1
kind: Deploy
metadata:
name: $name
namespace: $ns

接着,分几种 case 来使用 envsubst,以便于更好的理解。

  • case 1 | envsubst-template 从 envsubst 里拿变量 name 和 ns 的值,然后将替换后的 yaml 重定向到 envsubst-1.yaml 里

$ name=\’hello\’ ns=\’world\’ envsubst < envsubst-template.yaml > envsubst-1.yaml
$ cat envsubst-1.yaml
apiVersion: v1
kind: Deploy
metadata:
name: hello
namespace: world

注意, $ name='hello' ns='world' envsubst < envsubst-template.yaml > envsubst-1.yaml 也可以用export的方式定义:

$ export name=\’hello\’
$ export ns=\’world\’
$ envsubst < envsubst-template.yaml > envsubst-1.yaml

  • case 2 | 和 case 1 不同的地方是指定了 SHELL-FORMAT 为 $name, 意思是只将模板 yaml 里的 $name 变量用 envsubst 传入的变量替换掉,其他($ns)保持不变

$ name=\’hello\’ ns=\’world\’ envsubst \’$name\'< envsubst-template.yaml > envsubst-2.yaml
$ cat envsubst-2.yaml
apiVersion: v1
kind: Deploy
metadata:
name: hello
namespace: $ns

  • case 3 | 主要展示的是 –variables 这个 option 的作用:可以看到,当加上了这个变量后,标准输入被忽略,输出由 SHELL-FORMAT 中引用的环境变量组成

$ name=\’hello\’ ns=\’world\’ envsubst –variables \’$name\’&lt; envsubst-template.yaml &gt; envsubst-3.yaml
$ cat envsubst-3.yaml
name

  • case 4 | 主要展示的是 –variables 这个 option 的作用:可以看到,当加上了这个变量后,标准输入被忽略,输出由 SHELL-FORMAT 中引用的环境变量组成, 每行一个

$ name=\’hello\’ ns=\’world\’ envsubst –variables \’$name,$ns\'< envsubst-template.yaml > envsubst-4.yaml
$ cat envsubst-4.yaml
name
ns

以上就是高级开发运维测试必须掌握的envsubst命令使用详解的详细内容,更多关于开发运维测试envsubst命令的资料请关注悠久资源网其它相关文章!

您可能感兴趣的文章:

  • linux系列之常用运维命令整理笔录(小结)
  • Linux运维之如何使用ss命令代替netstat
  • Linux性能测试 pmap命令详解
  • Linux 命令查询小程序中的 WePY 云开发实践

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 linux shell 高级开发运维测试必须掌握的envsubst命令使用详解 https://www.u-9.cn/jiaoben/linuxshell/101208.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务