【发布时间】:2021-07-15 14:09:33
【问题描述】:
我有以下 bash 代码在 2 个环境中应用 YML 配置。
cat "script/service.yml" \
| sed -e "s/_REGISTRY_/$_REGISTRY/g" \
| sed -e "s/_PROJECT_/$_PROJECT/g" \
| $oc apply -f -
现在我需要更改它以停止在一个环境中应用某些属性。我有一个变量_PROJECT 来识别设置。我在下面试过了。
我的逻辑:如果 _PROJECT 是 xyz 我试图用空行替换 YML 属性(删除属性)
cat "script/service.yml" \
| sed -e "s/_REGISTRY_/$_REGISTRY/g" \
| sed -e "s/_PROJECT_/$_PROJECT/g" \
| if [ "$_PROJECT" = "xyz" ]; then
sed -e "s/^storage//g"
fi \
| $oc apply -f -
但是这段 bash 代码不起作用。如何更正这件作品以满足我的要求?
【问题讨论】:
-
你会失去理智尝试使用通常的 sed / awk 文本操纵器来操纵 yaml。看看github.com/mikefarah/yq
标签: bash shell sed replace yaml