我目前正在將多個變數(從.env檔案)加載到我的 shell 中,如下所示:
eval $(grep '^VAR_1' .env) && eval $(grep '^VAR_2' .env) && ...
然后我在這樣的腳本中使用它們:echo $VAR_1.
有什么辦法可以將此腳本壓縮為:eval $(grep ^('VAR_1|VAR_2')) .env?也許需要其他東西grep
uj5u.com熱心網友回復:
我將使用source( .) 命令進行行程替換:
. <(grep -e '^VAR_1=' -e '^VAR_2=' .env)
或者
. <(grep '^VAR_[12]=' .env) # for this particular variables
當然,該檔案.env必須來自受信任的來源。請注意,grep如果為變數分配了包含嵌入換行符的字串,則該方法將不起作用。
uj5u.com熱心網友回復:
您可以使用此grep選項ERE來過濾.env檔案中所需的所有變數:
grep -E '^(VAR_1|VAR_2)=' .env
此模式將在開始時查找VAR_1=或VAR_2=字串。
要設定變數使用:
declare $(grep -E '^(VAR_1|VAR_2)=' .env)
# or
eval "$(grep -E '^(VAR_1|VAR_2)=' .env)"
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/520118.html
標籤:重击壳grep
上一篇:Bash腳本生成換行符-為什么?
