目的
该脚本用于读取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