2020-09-19

#!/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<indent; i++) {vn=(vn)(vname[i])("_")}

                    key=vn$2conj[indent-1]

                    #printf("%s\n","'"$prefix"'")  

                    #printf("%s\n",key)

                    if( "'"$prefix"'" ==  key ){

            printf("%s\n",$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 sample.yaml && create_variables sample.yaml

parse_yaml sample.yaml $2

#create_variables sample.yaml

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值