在 bash 脚本中解析设置文件,其中一些特殊设置是数组

Parsing a settingsfile in bashscript where some special settings are arrays

我对 bash 脚本编写还是很陌生,不知何故我被困住了。 我正在寻找一种干净简单的方法来解析设置文件,其中一些特殊(和已知)设置是数组。

所以设置文件看起来像这样。

foo=(1 2 3 4)
bar="foobar"

到目前为止我想出的最佳解决方案是:

#!/bin/bash    
while IFS== read -r k v; do
    if [ "$k" = "foo" ]
        then
          IFS=' ' read -r -a $k <<< "$v"
        else
          declare "$k"="$(echo $v | tr -d '""')"
        fi
    done < settings.txt

但我显然混淆了数组类型。据我了解并尝试了 bar="foobar" 部分,这实际上声明了一个数组,可以通过 echo ${bar[0]} 访问,但也可以通过 echo $bar 访问。所以我认为这将是一个索引数组,但错误日志清楚地说明了一些不同的东西:

cannot convert associative to indexed array

如果有人能向我解释一下如何找到合适的解决方案,我会很高兴。

您只获取文件源是否安全?

. settings.txt

这将插入文件的所有行,就好像它们是您当前脚本的行一样。显然,如果文件不如脚本文件本身安全,就会存在安全问题。