Arrays Bash:一个数组可以保存另一个数组的名称吗?

Arrays Bash:一个数组可以保存另一个数组的名称吗?,arrays,bash,for-loop,Arrays,Bash,For Loop,我正在编写一个程序,并试图分解存储在数组中的数据,以使其运行更快。 我正试图这样做: data_to_analyze=(1 2 3 4 5 6 7 8 9 10) #original array size dataSize=(${#data_to_analyze[@]}) #half of that size let samSmall="$dataSize/2" #the other half let samSmall2=("$data

我正在编写一个程序,并试图分解存储在数组中的数据,以使其运行更快。 我正试图这样做:

    data_to_analyze=(1 2 3 4 5 6 7 8 9 10)
    #original array size
    dataSize=(${#data_to_analyze[@]})

    #half of that size
    let samSmall="$dataSize/2"

    #the other half
    let samSmall2=("$dataSize - $samSmall -1")

    #the first half
    smallArray=("${data_to_analyze[@]:0:$samSmall}")

    #the rest
    smallArray2=("${data_to_analyze[@]:$samSmall:$samSmall2}")

    #an array of names(which correspond to arrays)
    combArray=(smallArray smallArray2)
    sizeComb=(${#combArray[@]})

    #for the length of the new array
    for ((i=0; i<= $sizeComb ; i++)); do
        #through first set of data and then loop back around for the second arrays data? 
        for sample_name in ${combArray[i]}; do
            command
            wait
            command
            wait
        done
要分析的数据=(12345678910) #原始数组大小 数据大小=(${data_to_analyze[@]}) #那个尺寸的一半 让samSmall=“$dataSize/2” #另一半 让samSmall2=(“$dataSize-$samSmall-1”) #上半场 smallArray=(“${data_to_analyze[@]:0:$samSmall}”) #其余的 smallArray2=(“${data___-analyze[@]:$samSmall:$samSmall2}”) #名称数组(与数组相对应) combArray=(smallArray smallArray2) sizeComb=(${#combArray[@]}) #新数组的长度
对于((i=0;i您可以创建一个看起来像数组引用的字符串,然后使用它间接访问被引用数组的元素。它甚至适用于包含空格的元素

combArray=(smallArray smallArray2)
for array in "${combArray[@]}"
do
    indirect=$array[@]    # make a string that sort of looks like an array reference
    for element in "${!indirect}"
    do
        echo "Element: $element"
    done
done
!/bin/bash
数据分析=(1 2 3 4 5 6 7 8 9 10)
数据大小=${要分析的数据[@]}
((samSmall=dataSize/2,samSmall2=dataSize-samSmall))
smallArray=(“${data_to_analyze[@]:0:$samSmall}”)
smallArray2=(“${data___-analyze[@]:$samSmall:$samSmall2}”)
combArray=(smallArray smallArray2)
sizeComb=${#combArray[@]}

对于((i=0;i
combArray=(smallArray smallArray2)
,我认为。另外,
${#array[@]}周围不需要括号
construct。上面有多个语法错误,很难弄清楚您真正想要的是什么。例如,第9行有一个额外的括号,第18行有一个美元符号,我想您不是指。eval'a=(“${'${combArray[I]}”[@]}”)“这一行的替换错误很糟糕。问题可能是因为我最终使用了这种方法。这非常棒。谢谢!
#!/bin/bash
data_to_analyze=(1 2 3 4 5 6 7 8 9 10)
dataSize=${#data_to_analyze[@]}
((samSmall=dataSize/2,samSmall2=dataSize-samSmall))
smallArray=("${data_to_analyze[@]:0:$samSmall}")
smallArray2=("${data_to_analyze[@]:$samSmall:$samSmall2}")
combArray=(smallArray smallArray2)
sizeComb=${#combArray[@]}
for ((i=0;i<$sizeComb;i++));do
    eval 'a=("${'${combArray[i]}'[@]}")'
    for sample_name in "${a[@]}";do
        ...
    done 
done