【发布时间】:2020-01-14 07:39:09
【问题描述】:
我想要一个 shell 脚本来遍历文件中所有出现的环境变量名称,并用它们的当前值替换它们。我不确定如何使用sed 命令来完成此操作。
文件内容:
values:
value1:
name: "something"
value: "$ENV_VAR1" # this could be any variable name
value2:
name: "something"
value: "$ENV_VAR2"
...
首先,我需要找到所有出现的任何变量(使用正则表达式 "\$(.*?)" )。然后,不知何故,我需要用 shell 中的变量值替换它。我不确定如何使用sed 命令来实现第二部分,因为变量名是在文件本身中指定的。
类似于以下命令:
sed -i "s/\"\$(.*?)\"/${Some_How_Get_Var_Name}/g" file.yaml
【问题讨论】:
-
这是一个 YAML 文件吗?建议使用适当的语言感知解析器,如
yq -
perl -pe 'while (my ($k, $v) = each %ENV) { s/\$$k/$v/g }' -
@Inian 是的,它是一个 yaml 文件。我在一个 bash 非常有限的基本高山图像上运行它。