假设我有一个像这样的 yaml 文件:
foo:
bar: 1
env:
firstVar: true
secondVar: 20
aa_thirdVar: 'hello'
aa_fourthVar: false
并且我需要获取env
键下的键(带有前缀的键除外)aa_
作为 bash 数组,以便在 bash 脚本中使用该数组。
答案1
使用yq
命令https://kislyuk.github.io/yq/一个合适的工具来解析 YAML 格式的文件,你可以这样做:
yq -r '.env|to_entries[]|
if (.key|test("^[^a][^a][^_]*$")) then
( .key + "=" + (.value | @sh) )
else
empty
end
' infile
输出:
firstVar=true
secondVar=20
现在你只需要export
这些变量集
export $(yq ... )
或创建一个数组:
IFS=$'\n' arr=( $(yq ... ) )
在该( .key + "=" + (.value | @sh) )
部分中,它连接使用函数生成的键值对,to_entries
并使用@sh
语法(称为“格式字符串和转义”)来提供 POSIX sh shell 转义格式值。