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
최근 bash
ES에서는 "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