我想读取配置文件并将其写入数组。 =字符之前的所有内容都应该是数组的关键字。不幸的是,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[@]}
有更优雅的方式吗?或者这已经是一个很好的变体?