如何将关联数组添加到外部 ini 文件中的变量?

如何将关联数组添加到外部 ini 文件中的变量?

我正在修改一个简单的脚本以添加功能并了解有关如何编写 bash 脚本的更多信息。目前,该脚本使用函数创建关联数组:

declare -A site theme
add_site() {
    local shortcut=$1
    site[$shortcut]=$2
    theme[$shortcut]=$3
}
add_site x1 example1.com alpha
add_site x2 example2.com beta

现在我希望它读取变量的 ini 文件。然而,我遇到的文档都指导如何获取文件,但仅使用单个数组作为示例。如何使用如下所示的数据文件创建数组以创建关联数组:

[site1]
shortcut=x1
site=example1.com
theme=alpha

[site2]
shortcut=x2
site=example2.com
theme=beta

答案1

你可以这样做:

#!/bin/bash

declare -A site=() theme=()

add_site() {
    local shortcut=$1
    site[$shortcut]=$2
    theme[$shortcut]=$3
}

while IFS= read -r line; do
    case "$line" in
    shortcut=*)
        # IFS== read -r __ shortcut <<< "$line"
        _shortcut=${line#*=}
        ;;
    site=*)
        # IFS== read -r __ site <<< "$line"
        _site=${line#*=}
        ;;
    theme=*)
        # IFS== read -r __ theme <<< "$line"
        _theme=${line#*=}
        add_site "$_shortcut" "$_site" "$_theme"
        ;;
    esac
done < file.ini

添加echo "$@"on 功能测试输出:

x1 example1.com alpha
x2 example2.com beta

相关内容