【问题标题】:Remove a property in a YML file based on a condition in bash根据 bash 中的条件删除 YML 文件中的属性
【发布时间】: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 来识别设置。我在下面试过了。

我的逻辑:如果 _PROJECTxyz 我试图用空行替换 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 代码不起作用。如何更正这件作品以满足我的要求?

【问题讨论】:

标签: bash shell sed replace yaml


【解决方案1】:

能够想通。只需添加if else 块,如下所示。

if [ "$_PROJECT" = "xyz" ]; then
 cat "script/service.yml" \
  | sed -e "s/_REGISTRY_/$_REGISTRY/g" \
  | sed -e "s/_PROJECT_/$_PROJECT/g" \
  |sed -e "s/storage//g" \
  | $oc apply -f -
else
  cat "script/service.yml" \
  | sed -e "s/_REGISTRY_/$_REGISTRY/g" \
  | sed -e "s/_PROJECT_/$_PROJECT/g" \
  | $oc apply -f -  
fi

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 2019-06-04
    • 2019-07-02
    • 1970-01-01
    • 2016-01-18
    相关资源
    最近更新 更多