来自配置文件的Bash Parse数组

AJ *_*son 6 linux arrays bash parsing configuration-files

我需要为文件中的每个"部分"都有一个数组,其中包含:

[array0]
value1=asdf
value2=jkl

[array1]
value1=1234
value2=5678
Run Code Online (Sandbox Code Playgroud)

我希望能够像这样检索这些值:

echo ${array0[value1]}
echo ${array0[value2]}

echo ${array1[value1]}
echo ${array1[value2]}
Run Code Online (Sandbox Code Playgroud)

有关如何实现这一点的任何想法?(解释将是奖金)

我已经读过这些东西,但没有一个完全按照我的意愿去做.

在不使用"source"的情况下读取BASH中的配置文件

BASH从配置文件中解析变量

数组像bash(配置文件)中的数据结构?

gle*_*man 6

使用bash v4,使用关联数组,将配置文件中的属性存储为实际的bash变量:

$ while read line; do 
    if [[ $line =~ ^"["(.+)"]"$ ]]; then 
        arrname=${BASH_REMATCH[1]}
        declare -A $arrname
    elif [[ $line =~ ^([_[:alpha:]][_[:alnum:]]*)"="(.*) ]]; then 
        declare ${arrname}[${BASH_REMATCH[1]}]="${BASH_REMATCH[2]}"
    fi
done < config.conf

$ echo ${array0[value1]}
asdf

$ echo ${array1[value2]}
5678

$ for i in "${!array0[@]}"; do echo "$i => ${array0[$i]}"; done
value1 => asdf
value2 => jkl

$ for i in "${!array1[@]}"; do echo "$i => ${array1[$i]}"; done
value1 => 1234
value2 => 5678
Run Code Online (Sandbox Code Playgroud)