linux变量赋值到yaml,读取yaml文件的shell脚本

脚本如下:#!/bin/bash

function parse_yaml() {

local yaml_file=$1

local prefix=$2

local s

local w

local fs

s='[[:space:]]*'

w='[a-zA-Z0-9_.-]*'

fs="$(echo @|tr @ '\034')"

(

sed -ne '/^--/s|--||g; s|\"|\\\"|g; s/\s*$//g;' \

-e "/#.*[\"\']/!s| #.*||g; /^#/s|#.*||g;" \

-e "s|^\($s\)\($w\)$s:$s\"\(.*\)\"$s\$|\1$fs\2$fs\3|p" \

-e "s|^\($s\)\($w\)$s[:-]$s\(.*\)$s\$|\1$fs\2$fs\3|p" |

awk -F"$fs" '{

indent = length($1)/2;

if (length($2) == 0) { conj[indent]="+";} else {conj[indent]="";}

vname[indent] = $2;

for (i in vname) {if (i > indent) {delete vname[i]}}

if (length($3) > 0) {

vn=""; for (i=0; i

printf("%s%s%s%s=(\"%s\")\n", "'"$prefix"'",vn, $2, conj[indent-1],$3);

}

}' |

sed -e 's/_=/+=/g' \

-e '/\..*=/s|\.|_|' \

-e '/\-.*=/s|\-|_|'

) < "$yaml_file"

}

function create_variables() {

local yaml_file="$1"

eval "$(parse_yaml "$yaml_file")"

}

使用

脚本提供了两个函数:parse_yaml:读取yaml文件并直接输出结果。

create_variables:读取yaml文件,基于yaml文件的内容创建变量。

示例parse_yaml file.yml && echo

create_variables file.yml

来源:https://github.com/jasperes/bash-yaml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值