在使用腳本時,大多數用戶都會使用環境變量,但有時他們會使用具有風險成本的變量。
所以如果要替換環境變量,可以使用envsubst命令。
在 Linux 中使用 envsubst 命令替換環境變量
envsubst 命令用於獲取環境變量的替代品,顧名思義就是如此。
但它不會改變你的變量目錄。 首先,它將尋找變量模式(例如$VARIABLE
o[$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 命令取消設置這些變量。 讓我來告訴你怎麼做。
首先,取消設置您使用導出命令指定的變量。
就我而言,那些是,USERNAME
是PASSWORD
:
unset USERNAME PASSWORD
現在,如果你運行envsubst
再次命令,它會導致空白:

如果你對它是如何發生的感到好奇,讓我提醒你我之前提到的事情。
envsubst 命令只適用於導出的變量,當我使用 unset 命令時,值是空的。
是當 envsubst 命令沒有找到任何要替換的值時,它會輸出空白。
將輸出重定向到特定文件
擁有終端的輸出目錄並不總是最好的方式,在這種情況下,您可以將標準輸出重定向到文件。
要將輸出重定向到文件,您必須使用>
重定向符號。
例如這裡,我將輸出重定向到名為Output.txt
:
envsubst < confidential.txt > Output.txt

使用帶有 SHELL-FORMAT 的 envsubst 命令替換特定變量
因此,假設您導出了多個環境變量,但只想替換其中的一些。
在這種情況下,您可以使用 SHELL-FORMAT。
語法非常靈活,您需要做的就是在''
您可以通過多種方式使用它:
它可以用作:
envsubst '$variable' > file
或者您可以像這樣添加多個變量:
envsubst '$variable1 $variable1 $variable3' > file
您甚至可以添加基本文本以更好地理解:
envsubst 'subsitute the $variable1 and $variable2' > file
非常靈活。 好的?
現在對於這個例子,我將使用一個名為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
在不替換任何特定變量的情況下,它應該給我以下輸出:

所以假設我只想要的值$USER
是$SERVICE
讓它反映在輸出中,所以我將使用以下內容:
envsubst '$USER $SERVICE' < Substitute.txt

如您所見,它顯示了以下值$USER
是$SERVICE
離開時$USERNAME
是$PASSWORD
事情進展得怎麼樣了。
處理私人信息的有序方式。 是不是這樣?
你喜歡玩變量嗎? 我們有更多
如果您是一名開發人員並且喜歡使用環境變量,那麼您可以通過以下方式了解每個變量的價值:
或者,如果您有興趣了解在 basha 中使用變量的不尋常方法,可以按照以下方法進行操作:
我希望這篇文章對您有用,如果您對本指南或任何其他指南有任何疑問,或者只是想讓我介紹一個特定主題,請在評論中告訴我。