需求
需要从配置文件中读取key value到关联数组中
配置文件类似于如下结构:
key1:value1
key2:value2
key3:value3
处理脚本
从上述配置文件读取入关联数组的方法:
declare -A ass_array
oldIFS=$IFS
IFS=:
while read key value;
do
ass_array[$key]=$value;
echo "key : $key";
echo "value : $value"
echo "ass_array : ${ass_array[$key]}"
done<$PWD/Config.yml
IFS=$oldIFS
# 方法二:
declare -A THREE_MEMBER_CONFIG_ARRAY
while read line;
do
THREE_MEMBER_CONFIG_ARRAY[${line%:*}]=${line#*:};
done<$config_path/ThreeMemberConfig.yml
awk的方式无法生效:
awk 'BEGIN{ FS=":" } {ass_array[$1]=$2} ' $PWD/Config.yml
无法生效原因:
awk内部维持了一份环境变量,在内部对ass_array进行操作无法真正改变awk外的ass_array值
同时awk自带数组也无法外传到外部
awk输出外传的方法需要参考帖子中的方法一,可以据此写一个关联数组版本的。
ARRAY=($(awk ‘{print $2}’ ip.txt))