有没有办法在定义数组时使用变量?

有没有办法在定义数组时使用变量?

因此,我试图测试一些东西来解决将大文件存储为变量时参数列表太长的问题。

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}')
}

由于数组中的“(”,这会产生语法错误。定义新数组时,我发现可以使用 export 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")

为数组定义另一个变量时是否可以使用变量,或者这是一个错误?

有谁知道如何将像这样定义的数组的变量名的一部分作为另一个变量?

相关内容