如何使用 envsubst 命令替换环境变量

在使用脚本时,大多数用户都会使用环境变量,但有时他们会使用有风险的变量。

所以如果要替换环境变量,可以使用envsubst命令。

在 Linux 上使用 envsubst 命令替换环境变量

envsubst 命令用于获取环境变量的替代品,这就是它的名字所暗示的。

但它不会改变你的变量目录。 首先,它将寻找变量模式(例如 $VARIABLE 或者 [$VARIABLE]).

然后它将找到的变量替换为指定的 bash 多变的。

?envsubst 命令只会识别导出的变量。

要使用 envsubst 替换环境变量,您必须遵循给定的命令结构:

envsubst [OPTION] [SHELL-FORMAT]

现在,让我们看看如何更改环境变量。

为此,我将使用一个名为 confidential.txt 包含:

A sample file containg password and username!

And should not be shared by any means.

My loging credentials are:

        username=$USERNAME
        password=$PASSWORD

现在,为两者都有替代值 $USERNAME$PASSWORD,首先,我将为它们创建一个导出变量:

export USERNAME=abhiman
export PASSWORD=strongphrase

完成导出变量值后,您可以为您创建的文件调用 envsubst 命令:

envsubst < confidential.txt

如您所见,值已成功更改!!

同样,您可以使用 unset 命令取消设置这些变量。 让我告诉你怎么做。

首先,取消设置您使用导出命令指定的变量。

就我而言,那些是, USERNAMEPASSWORD:

unset USERNAME PASSWORD

现在,如果你运行 envsubst 再次命令,它会导致空格:

在 Linux 中取消设置变量

如果你对它是如何发生的感到好奇,让我提醒你一些我之前提到的事情。

envsubst 命令仅适用于导出的变量,当我使用 unset 命令时,值为空。

当 envsubst 命令找不到要替换的值时,它将导致出现空格。

将输出重定向到特定文件

有一个终端的输出目录并不总是最好的做事方式,在这种情况下,您可以将标准输出重定向到文件。

要将输出重定向到文件,您必须使用 > 重定向符号。

为了 example,在这里,我将输出重定向到名为 Output.txt:

envsubst < confidential.txt > Output.txt
将 envsubst 输出重定向到 linux 上的文件

使用带有 SHELL-FORMAT 的 envsubst 命令替换特定变量

因此,假设您已经导出了多个环境变量,但您只想替换其中的几个。

在这种情况下,您可以使用 SHELL-FORMAT。

语法非常灵活,您需要做的就是在 '' 您可以通过多种方式使用它:

它可以像这样使用:

envsubst '$variable' > file

或者您可以像这样附加多个变量:

envsubst '$variable1 $variable1 $variable3' > file

您甚至可以附加基本文本以便更好地理解:

envsubst 'subsitute the $variable1 and $variable2' > file

相当灵活。 正确的?

现在,为了这个 example,我将使用一个名为 Substitute.txt 其中包含以下内容:

Hello, My name is $USER.

And these are login credentials for $SERVICE:

        username=$USERNAME
        password=$PASSWORD

Not meant for public use!

接下来,我将导出上述文件中使用的每个变量的值:

export USER=sagar export SERVICE=AWS export USERNAME=LHB export PASSWORD=randomphrase  

在不替换任何特定变量的情况下,它应该会得到以下输出:

使用 envsubst 命令替换环境变量

所以比方说,我只想要的值 $USER$SERVICE 反映在输出中,所以我将使用以下内容:

envsubst '$USER $SERVICE' < Substitute.txt
在 Linux 上使用带有 SHELL-FORMAT 的 envsubst 替换特定变量

如您所见,它显示了以下值 $USER$SERVICE 而离开的 $USERNAME$PASSWORD 事实上。

一种处理私人信息的巧妙方法。 不是吗?

喜欢玩变量? 我们有更多

如果您是一名开发人员并且喜欢使用环境变量,那么您可以通过以下方式了解每个变量的值:

或者,如果您很想知道在 bash,这是你如何做的:

我希望这篇文章对您有所帮助,如果您对本指南或任何其他指南有任何疑问,或者只是想让我涵盖任何特定主题,请在评论中告诉我。