bash关联数组读取文件和设置键

时间:2017-11-23 11:55:22

标签: arrays bash scripting associative-array

我想读取配置文件并将其写入数组。 =字符之前的所有内容都应该是数组的关键字。不幸的是,bash没有正确解释变量。

不幸的是,它将变量名一对一。

ary["$key"]='test01 test02 test03'

测试配置示例:

IMAGES=test01 test02 test03
NEUIMAGE=test1 test2 test3

剧本:

#!/bin/bash

FILENAME='/testfile'

readarray -t lines < "$FILENAME"

set -x

while IFS== read -r key value; do
    echo $key
    test=ary["$key"]=$value
    ary["$key"]=$value
done < "$FILENAME"

echo ${ary[@]}

调试输出:

+ IFS==
+ read -r key value
+ echo IMAGES
IMAGES
+ test='ary[IMAGES]=test01 test02 test03‚
+ ary["$key"]='test01 test02 test03'
+ IFS==
+ read -r key value
+ echo NEUIMAGE
NEUIMAGE
+ test='ary[NEUIMAGE]=test1 test2 test3'
+ ary["$key"]='test1 test3 test2'
+ IFS==
+ read -r key value
+ echo test1 test3 test2
test1 test3 test2

我需要做些什么来解释变量?有更好的解决方案吗?

编辑:

感谢@gniourf_gniourf!

问题解决了:

#!/bin/bash

FILENAME='/testfile'

set -x

declare -A ary

while IFS== read -r key value; do
    echo $key
    test=ary["$key"]=$value
    ary["$key"]=$value
done < "$FILENAME"

echo ${ary[@]}

有更优雅的方式吗?或者这已经是一个很好的变体?

0 个答案:

没有答案