shell脚本实现读取yaml文件中的数组属性

文章目录

        • 目的
        • 脚本
        • 使用

目的

该脚本用于读取yaml文件中的数组属性,如IP列表:

ips:
  - 127.0.0.1
  - 127.0.0.2
  - 127.0.0.3

脚本

function read_array(){
    flag=0
    # 逐行读取内容
    cat $1 | while read LINE
    do 
        if [ $flag == 0 ];then
            # 属性开始标志 ips
            if [ "$(echo $LINE | grep "ips:")" != "" ];then
                flag=1
                continue
            fi
        fi
        if [ $flag == 1 ];then
            # 这行开始为ips下的数组属性,以‘- ’开头
            if [ "$(echo $LINE | grep -E "^- ")" != "" ];then
            	# 截取出数组属性内容
                echo "$LINE" | awk -F " " '{print $2}'
                continue
            else
            	# 不是以‘- ’开头则数组属性结束
                break
            fi
        fi
    done
}

使用

方法read_array()后跟yaml文件名作为参数。
现有a.yml:

ips:
  - 127.0.0.1
  - 127.0.0.2
  - 127.0.0.3

脚本中使用read_array a.yml,输出:

127.0.0.1
127.0.0.2
127.0.0.3

也可使用数组变量存放读取出来的值,如:

array=($(read_array a.yml))
# 把数组array依次打印
echo ${array[*]}

输出:

127.0.0.1 127.0.0.2 127.0.0.3

你可能感兴趣的:(shell)