首页 > 解决方案 > Bash - 如果 yaml 文件中存在值,则执行某些操作

问题描述

file.yaml 包含

thatyamlkey:
  - key1
  - key2
  - key3

我想检查“thatyamlkey:”中是否存在“key2”。如果是,则执行某些操作,如果不是,则退出 1。

我将如何在 bash 中解决这个问题。

该文件可通过 /path/to/file.yaml 或 http://path/to/file.yaml 之类的 linux 访问

请激发一个想法:)

谢谢!

标签: bashyamlconditional-statementskey

解决方案


使用类似的工具yq(它是一个 YAML 解析器jq):

filter='.thatyamlkey | any(. == $ARGS.positional[0])'
yq -e "$filter" file.yaml --args key2 > /dev/null || exit 1

...

yq不发出 HTTP 请求;您必须先使用诸如curl获取 URL 之类的工具。


推荐阅读