我被困在一个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 [@]}没有输出。
知道为什么我的剧本不起作用?谢谢你的帮助,抱歉我的英语不好。
答案 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
您可以使用上面的句点(。)或源内置命令