배열을 정의할 때 변수를 사용하는 방법이 있나요?

배열을 정의할 때 변수를 사용하는 방법이 있나요?

그래서 대용량 파일을 변수로 저장할 때 매개변수 목록이 너무 길어지는 문제를 해결하기 위해 뭔가 테스트해보려고 합니다.

lets_build_something_together () 
{ 
    file_name="$@";
    short=$(basename "${file_name}" | sed -e 's/ /_/g');
    unset make_file_array;
    while read file_array; do
       export make_file_array_${short}+=($(<${file_array}));
    done < <(split --verbose -b 1024 "${file_name}" | awk -F\' '/file/{print $2}')
}

배열의 "("로 인해 구문 오류가 발생합니다. 새 배열을 정의할 때 내보내기 make_file_array_${short}=value를 사용할 수 있음을 발견했습니다.

예:

$ export bar=foo
$ export ${bar}=wtf
$ declare -p foo
declare -x foo="wtf"

그런 다음 두 문자열을 연결할 수 있습니다.

$ export ${bar}+=wtf
$ declare -p foo
declare -x foo="wtfwtf"

하지만 배열을 사용하면 이 작업을 수행할 수 없는 것 같습니다.

$ unset bar
$ declare -a bar
$ export ${foo}+=(valueone)
bash: syntax error near unexpected token `('
$ declare -p bar
declare -a bar

나는 이것을 할 수 있어야 한다. 그러나 나는 입증된 바와 같이 믿는다:

$ export bar+=(foo)
$ export bar+=(demo)
$ export foo=bar
$ declare -p bar
declare -ax bar=([0]="foo" [1]="demo")
$ declare -p ${foo}
declare -ax bar=([0]="foo" [1]="demo")

배열에 다른 변수를 정의할 때 변수를 사용할 수 있습니까? 아니면 버그입니까?

이렇게 정의된 배열의 변수 이름 일부를 다른 변수로 전달하는 방법을 아는 사람이 있습니까?

관련 정보