동적 변수 이름을 사용하여 배열에 추가하는 방법은 무엇입니까?

동적 변수 이름을 사용하여 배열에 추가하는 방법은 무엇입니까?
section_example=(one two three)
name=example; section_$name+=(four)

bash: syntax error near unexpected token `four'

일부 이름은 사전에 알려지지 않았습니다. eval그리고 declare -a같은 오류를 출력합니다. 내가 보는 유일한 방법은 섹션 이름과 값을 포함하는 연관 배열을 선언하는 것입니다.

답변1

eval큰따옴표를 사용하면 ed 명령이 실패합니까? 좋다

name=example; eval "section_$name+=(six)"
echo "${section_example[@]}"
one two three four five six

최근 bashES에서는 "nameref" 변수를 제공합니다. man bash:

선언 또는 로컬 내장 명령의 -n 옵션(아래 선언 및 로컬에 대한 설명 참조)을 사용하여 변수에 nameref 속성을 할당하여 nameref 또는 다른 변수에 대한 참조를 생성할 수 있습니다. 이를 통해 변수를 간접적으로 조작할 수 있습니다.

노력하다

> declare -n NamRef=section_$name
> NamRef+=(four)
> echo "${NamRef[@]}"
one two three four
> echo "${section_example[@]}"
one two three four

관련 정보