从ini文件中提取信息并添加到关联数组(Bash)

时间:2017-05-14 13:38:43

标签: arrays linux bash

我被困在一个bash脚本上。 我有这样的config.ini文件:

#Username
username=user

#Userpassword
userpassword=password

我正在查看bash脚本以提取此信息并将其放入关联数组中。我的脚本看起来像:

declare -A array
OIFS=$IFS
IFS='='
grep -vE '^(\s*$|#)' file | while read -r var1 var2 
do
    array+=([$var1]=$var2)
done

echo ${array[@]}

但是数组似乎是空的,因为命令回显$ {array [@]}没有输出。

知道为什么我的剧本不起作用?谢谢你的帮助,抱歉我的英语不好。

2 个答案:

答案 0 :(得分:1)

常见错误 - “grep | while”导致while循环在单独的shell中执行,循环内的变量不是shell的全局变量。请改用here字符串:

while read -r var1 var2 
do
    array+=([$var1]=$var2)
done <<< $(grep -vE '^(\s*$|#)' file)

答案 1 :(得分:0)

假设文件可以信任(即内容受到管制和已知),最简单的方法是获取ini文件,然后直接在脚本中使用变量名称:

. config.ini

您可以使用上面的句点(。)或源内置命令