Joã*_*elo 81 shell environment-variables
我正在尝试通过 执行环境变量替换envsubst
,但我只想替换特定变量。
从文档中,我应该能够告诉envsubst
只替换某些变量,但我无法做到这一点。
例如,如果我有一个包含以下内容的文件:
VAR_1=${VAR_1}
VAR_2=${VAR_2}
Run Code Online (Sandbox Code Playgroud)
我应该如何执行envsubst
以便它只替换对 的引用${VAR_1}
?
don*_*sti 247
根据手册页:
envsubst [OPTION] [SHELL-FORMAT]
Run Code Online (Sandbox Code Playgroud)
如果给出了 SHELL-FORMAT,则仅替换 SHELL-FORMAT 中引用的那些环境变量;否则,将替换标准输入中出现的所有环境变量引用。
其中 SHELL-FORMAT 字符串是“引用表单中的 shell 变量的字符串$variable
或${variable}
[...]忽略了。” .
因此,必须将各自的变量名称传递envsubst
给 shell 格式的字符串(显然,它们需要被转义/引用以便按字面传递给envsubst
)。例子:
输入文件例如infile
:
VAR1=${VAR1}
VAR2=${VAR2}
VAR3=${VAR3}
Run Code Online (Sandbox Code Playgroud)
和一些值,如
export VAR1="one" VAR2="two" VAR3="three"
Run Code Online (Sandbox Code Playgroud)
然后运行
envsubst '${VAR1} ${VAR3}' <infile
Run Code Online (Sandbox Code Playgroud)
或者
envsubst '${VAR1},${VAR3}' <infile
Run Code Online (Sandbox Code Playgroud)
或者
envsubst '${VAR1}
${VAR3}' <infile
Run Code Online (Sandbox Code Playgroud)
产出
VAR1=one
VAR2=${VAR2}
VAR3=three
Run Code Online (Sandbox Code Playgroud)
或者,如果您更喜欢反斜杠:
envsubst \$VAR1,\$VAR2 <infile
Run Code Online (Sandbox Code Playgroud)
产生
VAR1=one
VAR2=two
VAR3=${VAR3}
Run Code Online (Sandbox Code Playgroud)
在调用之前,envsubst
您应该使用单引号导出来恢复VAR_1
修改。如:
export VAR_1='somevalue'
Run Code Online (Sandbox Code Playgroud)
欲了解更多详情,请参阅:
归档时间: |
|
查看次数: |
126850 次 |
最近记录: |