외부 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 "$@"기능 테스트 출력에 추가 :

x1 example1.com alpha
x2 example2.com beta

관련 정보